博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 注解总结
阅读量:2455 次
发布时间:2019-05-10

本文共 2257 字,大约阅读时间需要 7 分钟。

注解

基本注解

java提供了五个基本注解

  1. @Override :指定方法负载的,它可以轻质一个子类必须覆盖父类中的方法,保证父类要包含一个被该方法重写的方法,否则就会编译出错。(只能修饰方法,不能修饰元素)
  2. @Deprecated :用于表示某个程序元素(如方法、类)已经过时,如果使用编译器会给出警告
  3. @SuppressWarning:被该注释注释的程序元素取消显示指定的编译警告,且该注释一直作用于该程序元素的所有子元素。
    例如:关闭整个类里的编译器警告
    @SuppressWarning(value=“unchrcked”)
  4. @SafeVarargs:修饰引发“堆污染”的方法和构造器,专门为抑制堆污染提供
  5. @FunctionalInterface:指定某个接口必须是函数式接口(接口只有一个抽象方法),只能修饰接口。

元注解

  1. @Retention:只能用于修饰注解,指定被修饰的注解可以保留多长时间(value)。
    1.RententionPolicy.CLASS:编译器将注解记录在class文件里,运行时,jvm取不到注解信息。这是默认值。
    2.RententionPolicy.RUNTIME:编译器将注解记录在class文件中。当程序运行时,jvm也可以获取到注解信息,程序通过反射来获取该注解信息
    3.RententionPolicy.SOURCE: 注解只保留在源代码中,编译器直接丢弃这种注解。
  2. @Target :用于指定被修饰的注解能修饰那些程序单元(ElementType [] value)
    1.ElementType.ANNOTATION_TYPE:指定该注解只能修饰注解
    2.ElementType.CONSTRUCTOR: 指定该注解只能修饰构造器
    3.ElementType.FIELD: 该注解只能修饰成员变量
    4.ElementType.LOCAL_VARIABLE:该注解只能修饰局部变量
    5.ElementType.METHOD: 该注解只能修饰方法
    6.ElementType.PACKAGE: 该注解只能修饰包
    7.ElementType.PARAMETER:该注解只能修饰参数
    8.ElementType.TYPE: 该注解可以修饰类、接口或枚举定义
  3. @Documented: 被该注解修饰的类将被javadoc工具提取成文档。如果定义注解时使用了@Documented修饰,那么该注解修饰的程序元素的API文档中会包含该注解说明。
  4. @Inherited:被它修饰的注解将具有继承性,如果某个类使用了@Xxx注解,则其子类自动的也被@Xxx修饰
    注:查看某个类是否具有某个注解的API :类名.class.isAnnotationPresent(注解名.class)

自定义注解

  1. 定义注解使用 @interface关键字
  2. 成员变量在注解中以无形参的方法形式来声明,其方法名和返回值定义了该成员变量的名字和类型。
  3. 可以使用default指定成员变量的初始值。
public @interface Student{
String name(); int age() default 18; }

注解分类

1. 标记注解:没有成员变量的注解。这种仅利用自身的存在与否来提供信息,如@Override2. 元数据注解: 包含成员变量的注解。因为他们可以接收更多的元数据,因此也被称为元数据注解。

提取注解信息

1.使用了注解修饰类、方法等成员后,这些注解并不会自己生效,必须由开发者提供工具来处理注解信息。

2.java.labg.annotation.Annotation接口时所有注解的父接口。AnnotatedElement接口是程序中所有可以接收注解的程序元素。有一下几个实现类。
1.Class:类定义
2.Constructor:构造器定义
3.Field: 类的成员变量定义
4.Method: 类的方法定义
5.Package:类的包定义
通过反射获取了某个类的AnnotatedElement对象(如 Class Method Field 等),程序就可以调用该对象的如下几个方法来访问注解信息。
1. get Annotation(Class annotationClass);返回元素上存在的指定类型的注解,无则返回null
2. getDeclaredAnnotation(Class annotationClass) 返回指定类型的直接修饰该元素的注解 不存在返回null
3. getAnnotations() 返回该程序元素上的所有注解
4. getDeclaredAnnotations():返回直接修饰该程序元素上的所有注解
5. boolean isAnnotationPresent(Class annotationClass) 判断该程序元素上是否存在指定类型的注解
6. 等等…
直接使用注解来标记程序不会对程序有任何影响 这也是java注解的重要原则一条

APT

1. APT(Annotation Processing Tool)是一种注解处理工具,它找出源代码中的注解 进行额外信息的处理。2. java提供的javac.exe工具中有一个-processor选项,该选项可指定一个注解处理器,如果在编译java源文件时通过该选项指定了注解处理器,那么这个注解处理去将会在编译时提取并处理java源文件中的注解。

转载地址:http://denhb.baihongyu.com/

你可能感兴趣的文章
程序员简历工作模式_简历的完整形式是什么?
查看>>
shell -eom_EOM的完整形式是什么?
查看>>
java中null是常量吗_C_NULL Julia中的常量
查看>>
python中divmod_divmod()函数以及Python中的示例
查看>>
hypot函数_hypot()函数与C ++中的示例
查看>>
c++中atan2函数_atan2()函数以及C ++中的示例
查看>>
python函数示例_带Python示例的complex()函数
查看>>
math.ceil带小数点_Python中带有示例的math.ceil()方法
查看>>
sinh_带有Python示例的math.sinh()方法
查看>>
摄氏温度转换华氏温度_什么是摄氏温度?
查看>>
python中的元类_Python中的元类
查看>>
Java AWT TextField
查看>>
scala特质_Scala的特质
查看>>
python关键字和保留字_Python关键字
查看>>
合约 cd 模式_CD的完整形式是什么?
查看>>
vim中的jk为什么是上下_JK的完整形式是什么?
查看>>
oo0ooo0ooo0oo_OoO的完整形式是什么?
查看>>
kafka消息确认ack_什么是确认(ACK)? ACK代表什么?
查看>>
什么是Java文件?
查看>>
Java中的null是什么?
查看>>