第14章 注解(Annotation)

1. 5个基本注解

(1)@override:判断是否重写父类方法,只能修饰方法

(2)@Deprecated:判断类或方法是否过时,两个因素:

forRemoval:boolean类型判断是否会被删除

since:String类型,标记从哪个版本过时

如:

@Deprecated(since=“9”,forRemoval=true)

(3)@SuppressWarnings:抑制编译器警告

如:@SuppressWarnings(value=“unchecked”)

(4)@SafeVarargs:抑制“堆污染”

堆污染:把一个不带泛型的对象赋给一个带泛型的变量(或反过来),如:

List list = new ArrayList<Integer>();

List<String> ls = list;

(5)@FunctionalInterface:指定某个接口必须是函数或接口,只能修饰接口

 

 

2. 4个修饰注解的元注解

Java.lang.annotation包下的Meta注解

(1)@Retention:指定被修饰的注解可以保留多长时间

@Retention包含一个RetentionPolicy类型的value成员变量,其指定值有三个:

RetentionPolicy.Class :编译器将把注解记录在class文件中,当运行java程序时,JVM不可获得注解信息。

RetentionPolicy.RUNTIME: 编译器将把注解记录在class文件中,当运行java程序时,JVM可以获得注解信息,程序可以通过反射获取该注解信息。

RetentionPolicy.SOURCE:注解只保留在源代码中,编译器直接丢弃这种注解。

(2)@Target:修饰注解定义,指定修饰哪些程序单元,如@Target(ElementType.FIELD)

Public @interface ActionListenerFor()

(3)@Documented:被修饰的注解类或方法将被javadoc工具提取成文档。

(4)@Inherited:被它修饰的注解将具有继承性,即其子类也默认被@Inherited修饰。

 

3.自定义注解

如:public @interface Test{…}

关键字为@interface的注解类

注解可用于修饰任何程序元素,包括类、接口、方法等,分为带成员变量的注解和简单注解(无成员变量)。一旦在注解里定义成员变量,就须为成员变量指定值。两种方法:

    1)如

@MyTag(name=“Li”, age=6)

public void infor(){…}

    2)使用default关键字,如:

public @interface MyTag{
    String name() default “yeeku”;
    int age() default 32;
}

仅仅使用注解来标记程序元素对程序是不会有影响的,需借助处理工具来分析目标类。

  1. 利用标记通过反射获取
  2. 使用注解简化事件编程,绑定事件监听器

 

重复注解

多个重复注解其实会被作为“容器”注解的value成员变量的数组元素,如:

@FkTags({@FkTag(age = 5),

@FkTag(name = “疯狂Java” , age = 9)

})

可改为

@FkTag(age = 5)

@FkTag(name = “疯狂Java” , age = 9)

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值