Java注解基础

注解的本质

注解的本质就是一个继承了Annotation接口的接口

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {

}

这是注解 @Override 的定义,其实它本质上就是:

public interface Override extends Annotation{
    
}

元注解

元注解就是修饰注解的注解,Java中有以下几个元注解:

  • @Target:注解的作用目标
  • @Retention:注解的生命周期
  • @Documented:注解是否应当被包含在 JavaDoc 文档中
  • @Inherited:是否允许子类继承该注解

@Target的几个枚举值:

  • ElementType.TYPE:允许被修饰的注解作用在类、接口和枚举上
  • ElementType.FIELD:允许作用在属性字段上
  • ElementType.METHOD:允许作用在方法上
  • ElementType.PARAMETER:允许作用在方法参数上
  • ElementType.CONSTRUCTOR:允许作用在构造器上
  • ElementType.LOCAL_VARIABLE:允许作用在本地局部变量上
  • ElementType.ANNOTATION_TYPE:允许作用在注解上
  • ElementType.PACKAGE:允许作用在包上

@Retention的几个枚举值:

  • RetentionPolicy.SOURCE:当前注解编译期可见,不会写入 class 文件
  • RetentionPolicy.CLASS:类加载阶段丢弃,会写入 class 文件
  • RetentionPolicy.RUNTIME:永久保存,可以反射获取

JAVA 的内置三大注解

  • @Override: 标记方法是重载父类
  • @Deprecated:标记类或方法或字段过期,不推荐使用
  • @SuppressWarnings:压制Java的警告

自定义注解

定义

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String   value();
    String   name();
    int      age();
    String[] newNames();
}

使用

@MyAnnotation(
    value="123",
    name="Jakob",
    age=37,
    newNames={"Jenkov", "Peterson"}
)
public class MyClass {


}

参考文献:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是注解(Annotation):Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和...
    九尾喵的薛定谔阅读 3,266评论 0 2
  • 备注: 本文大部分内容及代码均来自网上,具体引用看末尾 8.参考引用** 概念及作用 JDK注解 元注解 自定...
    ting723阅读 1,530评论 2 5
  • 注解可以对类、类中成员和方法进行标注。主要作用有:1.提供信息给编译器: 编译器可以利用注解来探测错误和警告信息2...
    MacroZH阅读 168评论 0 0
  • 注解的概念 注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Me...
    FM小宇宙阅读 230评论 1 0
  • 一直相信城市是有生命的,就像人一样,在坚硬的外壳下,是一颗柔软的心。 你会喜欢一座城市,当你一遍遍地走过它的每一条...
    欢乐树和狗子阅读 260评论 3 3