Java注解

深入浅出Java注解

注解的作用

  • 格式检查:告诉编译器信息,比如被@Override标记的方法如果不是父类的某个方法,IDE会报错;
  • 减少配置:运行时动态处理,得到注解信息,实现代替配置文件的功能;
  • 减少重复工作:比如第三方框架xUtils,通过注解@ViewInject减少对findViewById的调用,类似的还有(JUnit、ActiveAndroid等);

使用场合:

  • 动态配置信息;
  • 代为实现程序逻辑(比如xUtils中的@ViewInject代为实现findViewById);
  • 代码格式检查,比如Override、Deprecated、NonNull、StringRes等,便于IDE能够检查出代码错误;

优点:

  • 在class文件中,提高程序的内聚性;
  • 减少重复工作,提高开发效率,比如findViewById。

缺点:

  • 如果对annotation进行修改,需要重新编译整个工程;
  • 业务类之间的关系不如XML配置那样一目了然;
  • 程序中过多的annotation,对于代码的简洁度有一定影响;
  • 扩展性较差;

Nullness注解

资源类型注解

类型定义注解

线程注解

值约束注解

权限注解

复写方法注解

 

 

元注解

  • @Target:

作用:用于描述注解的使用范围,即被描述的注解可以用在什么地方;

作用:用于描述注解的使用范围,即被描述的注解可以用在什么地方;

取值:

1、CONSTRUCTOR:构造器;

2、FIELD:实例;

3、LOCAL_VARIABLE:局部变量;

4、METHOD:方法;

5、PACKAGE:包;

6、PARAMETER:参数;

7、TYPE:类、接口(包括注解类型) 或enum声明。

 

  • @Retention:

作用:表示需要在什么级别保存该注解信息,用于描述注解的生命周期,即被描述的注解在什么范围内有效;

取值:

1、SOURCE:在源文件中有效,即源文件保留;

2、CLASS:在class文件中有效,即class保留;

3、RUNTIME:在运行时有效,即运行时保留;

 

  • @Documented:

作用:用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。

  • @Inherited:

作用:用于描述某个被标注的类型是可被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

 

 

 

如何自定义注解

 

1、注解类中的方法只能用public或者默认这两个访问权修饰,不写public就是默认

2、如果注解类中只有一个成员,最好把方法名设置为"value"

3、注解元素必须有确定的值,要么在定义注解的默认值中指定,要么在使用注解时指定,非基本类型的注解元素的值不可为null。因此, 使用空字符串或0作为默认值是一种常用的做法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值