Java注解介绍和简单使用

什么是注解

  1. 从JDK5开始,Java增加对元数据的支持,也就是注解,
  2. 可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。
  3. 通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。
  4. 注解是一种特殊的Java构造器,它可以用于装饰类方法、字段、参数,变量、构造函数、包、或者注解

为什么使用注解

当我们希望在代码元素(类方法、字段、参数,变量、构造函数、包、或者注解)上只要加上特定的标识,便能达到想有的功能时,就可以使用注解

例如:我们希望告诉编译器,这个类已经被废弃,尽量不要使用了,那么就可以在类上面加上系统定义的@Deprecated注解(如下图1),编译器编译时就会将该类加上标记中线(如图2),注解的作用不仅可以在编译期,运行时也是可以用的

图1
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607142046663.png
在这里插入图片描述

注解的类型

注解类型分为两种,第一种是元注解,第二种是普通注解

元注解: 可以在注解上加的注解,比如:指定普通注解的作用范围、保留保留的级别是编译期/字节码期/运行期,下面是是系统定义的常用元注解

  • @Target
    表示该注解可以用于什么地方,可能的ElementType参数有
    
    CONSTRUCTOR:        构造器的声明
    FIELD:              域声明(包括enum实例)
    LOCAL_VARIABLE:     局部变量声明
    METHOD:             方法声明
    PACKAGE:            包声明
    PARAMETER:          参数声明
    TYPE:               类、接口(包括注解类型)或enum声明  
    
  • @Retention
    表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:
    
    SOURCE:注解将被编译器丢弃
    CLASS:注解在class文件中可用,但会被VM丢弃
    RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。
    
  • @Document
    将注解包含在Javadoc中
    
  • @Inherited
    允许子类继承父类中的注解
    

普通注解: 注解到代码元素(类方法、字段、参数,变量、构造函数、包、或者注解),使其达到特有的功能,自定义注解我们是可以创建使用的

  • 系统的自定义注解
    @Override						//当前的方法定义将覆盖超类中的方法
    @Deprecated						//使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码
    @SuppressWarnings				//关闭不当编译器警告信息
    ....
    

创建一个注解

  1. 创建一个@interface类
  2. 指定该注解只能哪些地方使用
  3. 指定该注解需要在什么级别保存该注解信息
  4. 设置注解参数(可选)

代码示例

将注解修饰在代码元素上

  1. 查看注解可以用于什么地方
  2. 查看注解的参数
  3. 在元素上方加上注解

代码示例
在这里插入图片描述
在这里插入图片描述

查找注解并特殊处理

我们在代码元素上增加注解后,代码在调用的时候,就可以查看元素上有没有这个注解,有的话就做特定的处理

涉及的重要类

  • java.lang.annotation.Annotation
  • java.lang.annotation.ElementType
  • java.lang.annotation.RetentionPolicy

代码示例

总结

以上就是注解的使用,我们通过合适的地方加上注解,在合适的地方找到注解并处理事务就是核心思想,butterknife我们都用过,其实自己实现一个也是很简单的,下篇将手写一个butterknife功能,来更深入的了解注解玩法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值