java--认识反射
1.首先我们先认识一下什么事反射, 简单来说, 反射就是在程序的运行状态下可以让我们获得他的所有属性和方法
2.反射的几个重要的类 : Class, Field, Methon, Constructor
3. Class :
getClassLoader() : 获得类加载器
getDeclaredClasses() : 返回一个数组, 这个数组包含该类的所有接口类和对象(包括私有的)
forName(String className) : 根据类名返回实例
newInstance() : 创建类的实例
getName() : 获得完整路径的名字
4. Filed
getField(String name) : 获得某个公有属性的对象
getFields() : 获得所有公有属性的对象
getDeclaredField(String name) : 获得某个公有属性的所有对象
getDeclaredFields() : 获得所有公有属性的所有对象
getAnnotation(Class annotationClass) : 返回该类中与参数类型匹配的公有注解
getAnnoations() : 返回所有类中与参数类型匹配的公有注解
getDeclaredAnnotation(Class annotationClass) : 返回该类中与参数类型匹配的所有注解
getDeclaredAnnotations() : 返回所有类中与参数匹配的所有注解
5. Method
getMethod(String name, Class...<?> parameterTypes) : 获得该类的某个公有的方法
getMethods() : 获得该类的所有公有方法
getDeclaredMethod(String name, Class...<?> parameterTypes) : 获得该类的某个方法
getDeclaredMethods() : 获得该类的所有方法
调用私有方法时, 有个确认机制需要我们手动设置 -- .setAccessible(true)
6.Constructor
getConstructor(Class...<?> paramterType) : 获得该类中与参数匹配的公有构造方法
getConstructors() : 获得该类中所有公有构造方法
getDeclaredConstructor(Class...<?> paramterType) : 获得该类中与参数匹配的构造方法
getDeclaredConstructors() : 获得该类中所有的构造方法
7. 获得 class 的三种方法
通过获得的类可以进而获得他的方法和属性...
8.创建反射对象
9. 通过 Class对象 我们可以创建反射对象, 反射私有构造方法, 反射私有属性, 反射所有私有方法, 但是 Enum 对象反射无法得到, 因为在源码中特判了要是属于 Enum 对象, 无法被反射