反射也就是说,在编译时,你获取了一个指向某个并不存在你的程序空间中的对象的引用;事实上在编译时你的程序无法获知这个对象所属的类.
java附带的库java.lang.reflect包含了FIeld,Method,Constructor类.这些类型的对象是由jvm在运行时创建的,用以表示未知类里对应的成员.你就可以使用Constructor创建新的对象,用get()和set()方法读取和修改与Field对象关联的字段,用invoke()方法调用与Method对象关联的方法.^_^其他的去翻一下jdk文档吧!
1 .
• Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数,
• Constructor[] getConstructors() -- 获得类的所有公共构造函数
• Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关)
• Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数(与接入级别无关)
2.
• Field getField(String name) -- 获得命名的公共字段
• Field[] getFields() -- 获得类的所有公共字段
• Field getDeclaredField(String name) -- 获得类声明的命名的字段
• Field[] getDeclaredFields() -- 获得类声明的所有字段
3.
• Method getMethod(String name, Class[] params) -- 使用特定的参数类型,获得命名的公共方法
• Method[] getMethods() -- 获得类的所有公共方法
• Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,获得类声明的命名的方法
• Method[] getDeclaredMethods() -- 获得类声明的所有方法
java附带的库java.lang.reflect包含了FIeld,Method,Constructor类.这些类型的对象是由jvm在运行时创建的,用以表示未知类里对应的成员.你就可以使用Constructor创建新的对象,用get()和set()方法读取和修改与Field对象关联的字段,用invoke()方法调用与Method对象关联的方法.^_^其他的去翻一下jdk文档吧!
1 .
• Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数,
• Constructor[] getConstructors() -- 获得类的所有公共构造函数
• Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关)
• Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数(与接入级别无关)
2.
• Field getField(String name) -- 获得命名的公共字段
• Field[] getFields() -- 获得类的所有公共字段
• Field getDeclaredField(String name) -- 获得类声明的命名的字段
• Field[] getDeclaredFields() -- 获得类声明的所有字段
3.
• Method getMethod(String name, Class[] params) -- 使用特定的参数类型,获得命名的公共方法
• Method[] getMethods() -- 获得类的所有公共方法
• Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,获得类声明的命名的方法
• Method[] getDeclaredMethods() -- 获得类声明的所有方法