上一章节

反射的本质:将类的各种属性(类的变量,类的方法,类所在的包名,类的构造器等)映射成相应的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类,再动态的得到类的构造器并进行初始化。
示范代码如下:

Java代码
  1. public class MyConstructor {
  2. public static void main(String[] args) throws Exception{
  3. java.lang.reflect.Constructor con = String.class.getConstructor(new StringBuffer().getClass());
  4. String str = (String)con.newInstance(new StringBuffer("abcdefg"));
  5. System.out.println(str.charAt(2));
  6. }
  7. }
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));	}}