今天研究了下java反射机制,并利用反射机制,通过非默认构造器创建对象,代码如下:
public class Toy {
// Comment out the following default constructor
// to see NoSuchMethodError from (*1*)
public Toy() {}
public Toy(int i) {}
public Toy(String s) {System.out.println("Toy(String s)");}
}
public class ToyTest {
public static void main(String[] args) {
Class c = null;
Constructor con = null;
Toy toy = null;
try {
c = Class.forName("typeinfo.toys.Toy");
try {
//获取String类型构造器:
con = c.getConstructor(String.class);
System.out.println(con);
//传入“” 作为初始化参数
toy = (Toy) con.newInstance("");
System.out.println(toy);
}
catch (NoSuchMethodException e) {}
catch (IllegalArgumentException e) {}
catch (InstantiationException e) {}
catch (IllegalAccessException e) {}
catch (InvocationTargetException e) {}
}
catch (ClassNotFoundException e) {
print("Can't find FancyToy");
System.exit(1);
}
catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
- 对象实例化:通过Class对象的newInstance()方法或Constructor对象的newInstance()方法创建对象。 - 访问类成员:获取Field、Method和Constructor对象,进而访问类的字段、调用方法或构造函数。 2. **Field类** ...
- 使用`Class`对象的`newInstance()`方法,前提是该类有默认构造器。 - 通过`getConstructor(Constructor<?>... parameterTypes)`获取构造器,然后调用`newInstance(Object... initArgs)`方法,传入参数。 3. ...
反射机制可以通过`newInstance()`方法创建对象,前提是没有默认构造器或者构造器需要参数。如果需要参数,可以使用`Constructor`类的`newInstance(Object... args)`方法。 **4. 访问字段** - `getField(String ...
反射机制可以用来动态创建对象,`Class.newInstance()` 使用默认构造器创建对象,或者使用`Constructor.newInstance()` 指定构造器参数创建对象。 5. **调用方法** 调用方法需要获取Method对象,然后使用`invoke...
首先,通过`getClass()`获取对象的`Class`对象,然后使用`getDeclaredConstructor()`获取默认构造器创建新对象。接着,遍历并复制所有字段值。 需要注意的是,反射操作通常比直接调用方法和访问字段慢,因为它涉及...
Java反射机制是在运行时通过Reflection APIs获取任何已知类的内部信息,包括类的修饰符(如public、static等)、超类、实现的接口、字段和方法的全部信息。它还允许在运行时改变字段内容、调用方法,甚至创建未知类...
Java反射机制是在程序运行过程中,能够获取到关于类、接口、对象等的详细信息,并能动态地创建对象、调用方法、访问字段。这种能力使得开发者能够在不知道具体类名的情况下,仍然可以操作这些类的成员。 2. **反射...
1. 创建对象:通过`Class.newInstance()`创建默认构造器的对象,或`Constructor.newInstance()`创建指定构造器的对象。 ```java Class<?> clazz = Class.forName("com.example.MyClass"); MyClass obj = (MyClass) ...
2. 创建对象:`Class`对象的`newInstance()`方法用于创建指定类的新实例,前提该类有默认构造器。若需要调用带参数的构造器,需使用`Constructor`类的`getDeclaredConstructor()`和`newInstance()`方法。 3. 访问...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时检查类、接口、字段和方法的信息,甚至能够动态创建对象并调用其方法。本教程主要关注如何通过反射来获取运行时类的构造器结构。以下是关于Java反射...
Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于,它打破了编译时的束缚,使得代码具有更高的灵活性和可扩展性。在Java中,反射主要依赖于`...
- 创建对象:即使类的构造器是私有的也可以通过反射来实例化对象。 - 调用方法:包括公有、保护、默认访问级别的方法以及私有方法。 - 访问字段:包括公有、保护、默认访问级别的字段以及私有字段。 #### 三、Java...
// 通过默认构造方法创建一个新的对象 Constructor<?> constructor = classType.getConstructor(); Object objectCopy = constructor.newInstance(); // 获得对象的所有属性 Field[] fields = classType....
除了默认的无参构造器,我们还可以通过`getConstructor()`方法获取类的特定构造器,并使用`newInstance()`创建实例。 6. **动态代理**: Java反射机制还支持生成动态代理,这在处理接口调用时非常有用。`Proxy....