所谓反射,用例子来说,就是一面镜子,你给它照什么,它给你返回什么样子。
反射的基石是Class 类
包括类的名字、访问属性、所属包名、字段名称的列表、方法名称的列表等等
通俗的说,把Java类中的各种成分映射成相应的Java类
一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法可以得到这些实例对象。
反射的用处:工具类被用户的类调用,框架则是调用用户提供的类
因为在框架中写程序时无法知道要被调用的类名,无法new某个实例,所以要用反射来做
比如:
/*
使用反射实例化对象
*/
//利用反射完成:new String(new StringBuffer("abc"));
Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
//编译时候不知道是String的构造方法,运行时才知道是String的一个构造方法,所以必须强转告诉编译器得到String
String s = (String)constructor.newInstance(new StringBuffer("abc"));
System.out.println(s);
|