10、类得到Class对象有三种方式:
1)在编译时不知道类名,但是在运行期可以获得该类名的情况。Class c = Class.forName(“类名”);
2)如果在编译期知道类名的情况。Class c = 类名.class;或者Class c = Integer.TYPE;
3)如果一个类的实例已经得到的情况。Class c = 对象名.getClass();
如果是接口,只能用1、2两种方式。数组和基本数据类型只能用2、3两种方式。
11、
探究Class对象 | 得到一个指定的公共的Field | 得到指定的公共的Field、Method或Constructor,的一个数组对象 | 得到一个指定已声明Field对象、Method对象或Constructor对象。 | 得到所有申明了的Field、Method或Constructor的一个数组对象 |
属性 | getField(String name) | getFields() | getDeclaredField(String name) | getDeclaredFields() |
方法 | getMethod(String name) | getMethods() | getDeclaredMethod(String name) | getDeclaredMethods() |
构造 | getConstructor() | getConstructors() | getDeclaredConstructor(String name) | getDeclaredConstructors() |
12、反射可以动态地创建对象、在运行时加载一个特定的类。
13、通过反射查找到的内容都能在java.lang.relfect包中找到类说明。
14、反射技术能找到一个类中定义了什么方法,以及这些方法有什么参数和类型特征。
15、使用反射技术可以通过方法名来执行类中的方法。