Java编程思想

Java编程思想——第二十章:注解

2019-06-09  本文已影响0人  代夫阿普曼

注解 也被成为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。

注解可以提供用来完整地描述程序所需的信息,而这些信息是无法用Java来表达的。

定义在 java.lang 中的注解:

1.基本语法

public class Testable {
    public void execute() {
        System.out.println("Executing...");
    }
    @Test void testExecute() {
        execute();
    }
}

被注解的方法与其他的方法没有区别。

1.1 定义注解

定义@Test注解

@Target(ElementType.Method)
@Retentation(RetentationPolicy.RUNTIME)
public @interface Test{}

注解的元素看起来就像接口的方法,唯一的区别是你可以为其指定默认值。没有元素的注解称为 标记注解(marker annotation)

1.2 元注解

元注解负责注解其他的注解

元注解 说明
@Target 表示该注解可以用于什么地方。可能的 ElementType 参数包括:CONSTRUCTOR(构造器的声明),FIELD(域声明),LOCAL_VARIABLE(局部变量声明),METHOD(方法声明),PACKAGE(包声明),PARAMETER(参数声明),TYPE(类,接口或enum 声明)。
@Retention 表示需要在什么级别保存该注解信息。可选的Retention参数包括:SOURCE,CLASS,RUNTIME
@Documented 将此注解包含到Javadoc中
@Inherited 允许子类继承父类中的注解

2.编写注解处理器

如果没有用来读取注解的工具,那注解也不会比注释更有用。使用注解的过程中,很重要的一部分就是创建与使用 注解处理器

编译其对元素的默认值有些过分挑剔。首先,元素不能有不确定的值。也就是说元素必须要么具有默认值,要么在使用注解的时候提供元素的值。其次,对于非基本类型的元素。这个约束使得处理器很难表现一个元素的存在或缺失的状态,因为在每个注解的声明中,所有的元素都存在,并且都具有相应的值。为了绕开这个约束,我们只能定义一些特殊的值,例如空字符串或负值。

不能使用 extends 来继承某个@interface


09/06/2019 :created
上一篇 下一篇

猜你喜欢

热点阅读