-
内置注解
注解 说明 @Override 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。 @Deprecated 标记过时方法。如果使用该方法,会报编译警告。 @SuppressWarnings 指示编译器去忽略注解中声明的警告。 @Retention 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。通常需要给定参数RetentionPolicy @Documented 标记这些注解是否包含在用户文档中。 @Target 标记这个注解应该是哪种 Java 成员。通常需要给定参数ElementType @Inherited 标明注解是能被继承的,例如B继承了A,A添加了注解,那么B也会继承同样的注解 @SafeVarargs Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。 @FunctionalInterface Java 8 开始支持,标识一个匿名函数或函数式接口。 @Repeatable Java 8 开始支持,标识某注解可以在同一个声明上使用多次。 -
ElementType(枚举)
类型 说明 TYPE 类、接口(包括注释类型)或枚举声明 FIELD 字段声明(包括枚举常量) METHOD 方法声明 PARAMETER 参数声明 CONSTRUCTOR 构造方法声明 LOCAL_VARIABLE 局部变量声明 ANNOTATION_TYPE 注释类型声明 PACKAGE 包声明 -
RetentionPolicy(枚举)
类型 说明 SOURCE Annotation信息仅存在于编译器处理期间,编译器处理完之后就没有该Annotation信息了 CLASS 编译器将Annotation存储于类对应的.class文件中。默认行为 RUNTIME 编译器将Annotation存储于class文件中,并且可由JVM读入 -
反射:动态加载类及其成员
类名 用途 Class类 代表类的实体,在运行的Java应用程序中表示类和接口 Field类 代表类的成员变量(成员变量也称为类的属性) Method类 代表类的方法 Constructor类 代表类的构造方法 -
Class类
方法 说明 forName(String className) 局部变量声明 newInstance() 创建类的实例 getPackage() 获得类的包 getSimpleName() 获得类的名字 getSuperclass() 获得当前类继承的父类的名字 getInterfaces() 获得当前类实现的类或是接口 -
获取Field类
方法 说明 getField(String name) 获得某个公有的属性对象 getFields() 获得所有公有的属性对象 getDeclaredField(String name) 获得某个属性对象 getDeclaredFields() 获得所有属性对象 -
Field类重要方法
方法 说明 equals(Object obj) 属性与obj相等则返回true get(Object obj) 获得obj中对应的属性值 set(Object obj, Object value) 设置obj中对应属性值 -
获取Method类
方法 说明 getMethod(String name, Class…<?> parameterTypes) 获得该类某个公有的方法 getMethods() 获得该类所有公有的方法 getDeclaredMethod(String name, Class…<?> parameterTypes) 获得该类某个方法 getDeclaredMethods() 获得该类所有方法 -
Method类重要方法
方法 说明 invoke(Object obj, Object… args) 传递object对象及参数调用该对象对应的方法 -
获取Constructor类
方法 说明 getConstructor(Class…<?> parameterTypes) 获得该类中与参数类型匹配的公有构造方法 getConstructors() 获得该类的所有公有构造方法 getDeclaredConstructor(Class…<?> parameterTypes) 获得该类中与参数类型匹配的构造方法 getDeclaredConstructors() 获得该类所有构造方法 -
Constructor类重要方法
方法 说明 newInstance(Object… initargs) 根据传递的参数创建类的对象 -
获取Annotation类
方法 说明 getAnnotation(Class annotationClass) 返回该类中与参数类型匹配的公有注解对象 getAnnotations() 返回该类所有的公有注解对象 getDeclaredAnnotation(Class annotationClass) 返回该类中与参数类型匹配的所有注解对象 getDeclaredAnnotations() 返回该类所有的注解对象 -
其他重要的方法
方法 说明 isAnnotation() 如果是注解类型则返回true isAnnotationPresent(Class<? extends Annotation> annotationClass) 如果是指定类型注解类型则返回true isAnonymousClass() 如果是匿名类则返回true isArray() 如果是一个数组类则返回true isEnum() 如果是枚举类则返回true isInstance(Object obj) 如果obj是该类的实例则返回true isInterface() 如果是接口类则返回true isLocalClass() 如果是局部类则返回true isMemberClass() 如果是内部类则返回true -
Class:用于描述类的类
- 通过类名获取Class类,会有一个异常,类名不能定位到类,一般是在****配置文件当中****获取的字符串
- 通过对象来获取Class类,一般适用在传参的时候,或者参数数据****类型不定****的时候使用
- 通过类来获取Class类,一般用于****明确****类型的参数传递
- 使用newInstance的方法创建的实例,****默认****情况下实际上是调用的目标类的空参构造
java注解与反射
最新推荐文章于 2023-07-17 15:55:08 发布