为了做到使得程序具有更高的灵活性,可配置性,在开发中我们经常利用反射来创建一个类的实例,也就是获得一个类的一个对象!通常的做法是通过class.newInstance获得;但这种方法有一个不好的地方,那就是他只能创建无参构造器的对象,如果构造器有参数那它是无能为力的;解决的方法就是 先通过该类的Class获得带有参数的构造器,然后通过得到的构造器和传如的初始化参数来创建实例!以下是上述做法的一个demo:
实体类:
- packagereflect;
-
publicclassDuck{
-
privateIntegerweight;
-
privateStringname;
-
-
publicDuck(){
-
System.out.println("无参调用了");
- }
-
-
-
publicDuck(Stringname){
- name=name;
-
System.out.println("one参调用了");
- }
-
-
publicDuck(Stringname,Integerweight){
- name=name;
- weight=weight;
-
System.out.println("Two参调用了");
- }
- }
- packagereflect;
-
importjava.lang.reflect.Constructor;
-
importjava.lang.reflect.InvocationTargetException;
-
publicclassExeTest{
-
-
publicstaticvoidmain(String[]args){
-
<SPANstyle="COLOR:#000000">Classcls=Duck.class;</SPAN>
-
Classconargs[]={String.class,Integer.class};
-
-
try{
-
<SPANstyle="COLOR:#000000">Constructorconstructor=cls.getConstructor(conargs);</SPAN>
-
Stringname="abc";
-
Integerweight=newInteger(1056);
- Objectinitargs[]={name,weight};
-
<SPANstyle="COLOR:#000000">constructor.newInstance(initargs);</SPAN>
-
-
}catch(SecurityExceptione){
-
- e.printStackTrace();
-
}catch(NoSuchMethodExceptione){
- e.printStackTrace();
-
}catch(IllegalArgumentExceptione){
-
- e.printStackTrace();
-
}catch(InstantiationExceptione){
-
- e.printStackTrace();
-
}catch(IllegalAccessExceptione){
-
- e.printStackTrace();
-
}catch(InvocationTargetExceptione){
-
- e.printStackTrace();
- }
-
- }
- }
分享到:
相关推荐
在本“Java反射经典实例”中,我们将深入探讨这个主题,了解如何利用反射来访问和修改私有属性以及调用私有方法。 1. **反射的概念与用途** - 反射机制是在运行时分析类的能力,它允许我们获取类的信息(如类名、...
Java反射是Java编程语言中的一个重要特性,它允许程序在...学习这个示例,你可以更好地掌握Java反射机制,如何实例化对象,调用方法以及访问字段。通过实践,你将能够灵活地应用反射到实际项目中,解决动态编程的需求。
### Java反射机制与动态加载实例类 在Java中,反射是一种强大的工具,允许程序在运行时检查和修改其结构和行为。通过反射,我们可以动态地加载类、创建对象、访问和修改字段、调用方法等。本文将深入探讨Java反射...
在提供的"Java反射经典实例.htm"文件中,可能会包含具体的代码示例,演示如何使用反射创建对象、访问字段、调用方法等。结合文件中的内容,读者可以更深入理解反射的实际应用。 总结,Java反射机制提供了对运行时类...
### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...
在提供的"java反射实例代码"中,应该包含了如何使用上述方法的实际示例,这些示例有助于加深对Java反射机制的理解。通过阅读和运行这些代码,开发者可以更直观地学习如何在程序运行时动态地操作类、方法和字段,从而...
2. **创建实例**:`Object obj = c.newInstance();` - `newInstance`方法根据`Class`对象创建一个新的实例。 3. **调用方法**: - `getMethod`方法根据方法名和参数类型列表获取指定的方法对象。 - `invoke`方法...
以下将详细介绍Java反射的8个关键实例。 1. 获取Class对象 要使用反射,首先需要获取到目标类的Class对象。这可以通过以下几种方式实现: - 使用`Class.forName()`方法,如`Class<?> clazz = Class.forName("全...
8. **反射示例**:以下代码展示了如何使用反射创建对象并调用方法: ```java public class Test { public void printMessage(String msg) { System.out.println("Message: " + msg); } public static void ...
代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个资源“java反射调用实例代码”提供了关于如何使用Java反射API进行各种...
在"java反射大讲堂 实例源码下载"中,我们将会探讨如何利用Java反射机制来实现对类的深入理解和动态操控。 首先,我们要了解什么是类的继承关系。在面向对象编程中,继承是类之间的一种层次结构,一个类可以继承另...
这些代码可能包括创建枚举类,然后通过反射获取枚举值、实例名以及演示如何使用`getDeclaredConstructor()`和`newInstance()`方法来访问私有构造函数(虽然这不是常规用法)。 通过深入理解这些概念,你可以更好地...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...
标题"Java反射实例源码"表明我们将探讨如何通过源代码来实现和理解Java反射。这个实例可能包含了如何动态地创建对象、调用方法、访问字段和执行构造器的示例。 描述中提到的博客文章"菜鸟学编程(九)——Java反射...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
三、Java反射实例 1. 创建对象:通过`Class.newInstance()`创建默认构造器的对象,或`Constructor.newInstance()`创建指定构造器的对象。 ```java Class<?> clazz = Class.forName("com.example.MyClass"); MyClass ...
// 使用反射获取类并创建实例 Class<?> clazz = Class.forName(className); T instance = (T) clazz.newInstance(); // 获取方法并调用 Method method = clazz.getMethod(methodName, getTypes(args)); ...
在标题“Java反射实例”中,我们聚焦于如何在实际编程中应用这一特性。通过反射,我们可以动态地获取类的信息,如类名、方法名、字段名,甚至可以在运行时创建和调用对象。这对于实现元编程、插件系统、序列化、单元...