要想通过反射构造出一个类的实例,需要经过以下步骤:
1 反射出该类的构造函数
2 通过该构造函数创建对象
例如,反射出类String 构造方法new 出的对象
( buffer)
分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。
-
//new String(new StringBuffer("abc"));
-
Constructor constructor = String.class.getConstructor(StringBuffer.class);
-
String str = (String)constructor.newInstance(new StringBuffer("abc"));
-
System.out.println(str.charAt(1));
-
/*
-
* 通过反射获取构造方法并使用。
-
*/
-
public class ReflectDemo {
-
public static void main(String[] args) throws Exception {
-
// 获取字节码文件对象
-
-
Class c = Class.forName("com.lhk.Person");
-
-
// 获取构造方法
-
-
// public Constructor[] getConstructors():所有公共构造方法
-
-
// public Constructor[] getDeclaredConstructors():所有构造方法
-
-
// Constructor[] cons = c.getDeclaredConstructors();
-
-
// for (Constructor con : cons) {
-
-
// System.out.println(con);
-
-
// }
-
-
-
// 获取单个构造方法
-
-
// public Constructor getConstructor(Class>... parameterTypes)
-
-
// 参数表示的是:你要获取的构造方法的构造参数个数及数据类型的class字节码文件对象
-
-
Constructor con = c.getConstructor();// 返回的是构造方法对象
-
-
-
// Person p = new Person();
-
-
// System.out.println(p);
-
-
// public T newInstance(Object... initargs)
-
-
// 使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。
-
-
Object obj = con.newInstance();
-
System.out.println(obj);
-
-
// Person p = (Person)obj;
-
-
// p.show();
-
-
}
-
}
阅读(1641) | 评论(0) | 转发(0) |