java注解与反射

  1. 内置注解

    注解说明
    @Override检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
    @Deprecated标记过时方法。如果使用该方法,会报编译警告。
    @SuppressWarnings指示编译器去忽略注解中声明的警告。
    @Retention标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。通常需要给定参数RetentionPolicy
    @Documented标记这些注解是否包含在用户文档中。
    @Target标记这个注解应该是哪种 Java 成员。通常需要给定参数ElementType
    @Inherited标明注解是能被继承的,例如B继承了A,A添加了注解,那么B也会继承同样的注解
    @SafeVarargsJava 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。
    @FunctionalInterfaceJava 8 开始支持,标识一个匿名函数或函数式接口。
    @RepeatableJava 8 开始支持,标识某注解可以在同一个声明上使用多次。
  2. ElementType(枚举)

    类型说明
    TYPE类、接口(包括注释类型)或枚举声明
    FIELD字段声明(包括枚举常量)
    METHOD方法声明
    PARAMETER参数声明
    CONSTRUCTOR构造方法声明
    LOCAL_VARIABLE局部变量声明
    ANNOTATION_TYPE注释类型声明
    PACKAGE包声明
  3. RetentionPolicy(枚举)

    类型说明
    SOURCEAnnotation信息仅存在于编译器处理期间,编译器处理完之后就没有该Annotation信息了
    CLASS编译器将Annotation存储于类对应的.class文件中。默认行为
    RUNTIME编译器将Annotation存储于class文件中,并且可由JVM读入
  4. 反射:动态加载类及其成员

    类名用途
    Class类代表类的实体,在运行的Java应用程序中表示类和接口
    Field类代表类的成员变量(成员变量也称为类的属性)
    Method类代表类的方法
    Constructor类代表类的构造方法
  5. Class

    方法说明
    forName(String className)局部变量声明
    newInstance()创建类的实例
    getPackage()获得类的包
    getSimpleName()获得类的名字
    getSuperclass()获得当前类继承的父类的名字
    getInterfaces()获得当前类实现的类或是接口
  6. 获取Field类

    方法说明
    getField(String name)获得某个公有的属性对象
    getFields()获得所有公有的属性对象
    getDeclaredField(String name)获得某个属性对象
    getDeclaredFields()获得所有属性对象
  7. Field类重要方法

    方法说明
    equals(Object obj)属性与obj相等则返回true
    get(Object obj)获得obj中对应的属性值
    set(Object obj, Object value)设置obj中对应属性值
  8. 获取Method类

    方法说明
    getMethod(String name, Class…<?> parameterTypes)获得该类某个公有的方法
    getMethods()获得该类所有公有的方法
    getDeclaredMethod(String name, Class…<?> parameterTypes)获得该类某个方法
    getDeclaredMethods()获得该类所有方法
  9. Method类重要方法

    方法说明
    invoke(Object obj, Object… args)传递object对象及参数调用该对象对应的方法
  10. 获取Constructor类

    方法说明
    getConstructor(Class…<?> parameterTypes)获得该类中与参数类型匹配的公有构造方法
    getConstructors()获得该类的所有公有构造方法
    getDeclaredConstructor(Class…<?> parameterTypes)获得该类中与参数类型匹配的构造方法
    getDeclaredConstructors()获得该类所有构造方法
  11. Constructor类重要方法

    方法说明
    newInstance(Object… initargs)根据传递的参数创建类的对象
  12. 获取Annotation类

    方法说明
    getAnnotation(Class annotationClass)返回该类中与参数类型匹配的公有注解对象
    getAnnotations()返回该类所有的公有注解对象
    getDeclaredAnnotation(Class annotationClass)返回该类中与参数类型匹配的所有注解对象
    getDeclaredAnnotations()返回该类所有的注解对象
  13. 其他重要的方法

    方法说明
    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
  14. Class:用于描述类的类

    1. 通过类名获取Class类,会有一个异常,类名不能定位到类,一般是在****配置文件当中****获取的字符串
    2. 通过对象来获取Class类,一般适用在传参的时候,或者参数数据****类型不定****的时候使用
    3. 通过类来获取Class类,一般用于****明确****类型的参数传递
    4. 使用newInstance的方法创建的实例,****默认****情况下实际上是调用的目标类的空参构造
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隐 风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值