上一章节
反射的本质:将类的各种属性(类的变量,类的方法,类所在的包名,类的构造器等)映射成相应的java类。用"一群类"去描述和操纵一个类。 类的反射之构造器类 一 通过构造器类(Constructor)获得指定类的构造器: 1 java.lang.reflect.Constructor[] cons = String.class.getConstructors();此句将返回所有的构造器方法 2 java.lang.reflect.Constructor con = String.class.getConstructor(new StringBuffer().getClass());此句将返回指定的构造器方法 二 当使用构造器类(Constructor)获得指定类的构造方法后就可以进行实例化操作,语法: 1 Class cls = Class.forName("java.lang.String");cls.newInstance();这实际上是一种捷径式写法 2 java.lang.reflect.Constructor con = String.class.getConstructor(new StringBuffer().getClass()); String str = (String)con.newInstance(new StringBuffer("abcdefg"));这才是正常的调用程序 意义:可以在程序运行后动态的加载java类,再动态的得到类的构造器并进行初始化。 示范代码如下:- public class MyConstructor {
- public static void main(String[] args) throws Exception{
- java.lang.reflect.Constructor con = String.class.getConstructor(new StringBuffer().getClass());
- String str = (String)con.newInstance(new StringBuffer("abcdefg"));
- System.out.println(str.charAt(2));
- }
- }
public class MyConstructor { public static void main(String[] args) throws Exception{ java.lang.reflect.Constructor con = String.class.getConstructor(new StringBuffer().getClass()); String str = (String)con.newInstance(new StringBuffer("abcdefg")); System.out.println(str.charAt(2)); }}