注解:@Target和@Retention

@Target(ElementType.METHOD) 

@Retention(RetentionPolicy.RUNTIME)

public @interface FieldName {

    String value();

}

@Target用于设定注解使用的范围

使用ElementType来指定注解使用范围的枚举集合

取值 注解使用范围 METHOD 可用于方法上 TYPE 可用于类或者接口上 ANNOTATION_TYPE 可用于注解类型上(被@interface修饰的类型) CONSTRUCTOR 可用于构造方法上 FIELD 可用于域上 LOCAL_VARIABLE 可用于局部变量上 PACKAGE 用于记录java文件的package信息 PARAMETER 可用于参数上

其中:ElementType. PACKAGE。它并不是使用在一般的类中,而是用在固定的文件package-info.java中。这里需要强调命名一定是“package-info”。由于package-info.java并不是一个合法的类,使用eclipse创建类的方式会提示不合法,所以需要以创建文件的方式来创建package-info.java。


@Retention定义被它所注解的注解保留多久。

1。RetentionPolicy.SOURCE被编译器忽略

2。RetentionPolicy.CLASS注解将会保留在注解中,但在运行时并不会被VM保留。这是默认的行为,即使没有该注解,也默认使用该注解。

3。RetentionPolicy.RUNTIME注解将会保留在运行时。所以我们可以通过反射去获取注解信息。

猜你喜欢

转载自blog.csdn.net/bird_a_java/article/details/80081028