Java中的注解

Java中的注解


Spring开发中经常用到注解,而Spring Boot更是“约定大于配置”,搭建项目仅有的几个都通过注解搞定了。

JDK1.5版本引入注解。所有的注解均继承自Annotation接口。查看Annotation的源码可以发现有四个方法,分别是equals, hashCode, toString, annotationType。定义注解的时候,使用特殊标记@interface,而不是显示指定继承自Annotation,又编译器自动做相关处理。

三个元注解:@Documented @Retention @Target

  1. @Documented

    表示注解会进入Javadoc

  2. @Retention

    保留策略。定义在枚举类RetentionPolicy中的三种保留策略:SOURCE(只保存在源代码,编译时丢弃)、CLASS(保存在字节码文件中)、RUNTIME(字节码文件&JVM)。

  3. @Target

    作用目标.定义在ElementType的其中类型:

    TYPE: 类,接口(包括注解类型)

    FIELD: 属性

    METHOD: 方法

    PARAMETER: 参数

    CONSTRUCTOR: 构造器

    LOCAL_VARIABLE: 局部变量

    ANNOTATION_TYPE: 注解类型

    PACKAGE: 包

    JDK1.8之后@Target新增的两种类型:

    TYPE_PARAMETER: 类型变量声明(泛型)

    TYPE_USE: 类型使用

常见注解:

@Override: 编译校验重载方法

@Deprecated 过时内容

@Inherited 注解具有继承性。例如@Annot是带有@Inherited注解的注解,注解到了A类上,则A类的子类也带上了@Annot注解。

@SuppressWarnings 忽略标注内容的警告

自定义的注解必须有三个元注解;注解可以注在其他注解上。

注解中成员的类型:

  1. 基本数据类型(boolean, byte, char, short, int, long, float, double等);
  2. String;
  3. Class;
  4. 枚举;
  5. 其他的;
  6. 以上类型的数组;
public @interface MyAnnotation {
    String value();
    Integer[] attr();
}
//使用注解,指定相应类型及数组类型的值,当只有value时可以直接@Annot("abcd")
@MyAnnotation(value="Annotated", attr={1,2,3})
public class Annotated {
    
}

通过反射机制可以获取到类,方法或者参数等上面的注解,继而进行相应的处理。例如自定义日志注解,并使用切面技术对注解统一处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值