Java 的注解

什么是注解

An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated. Annotations have no direct effect on the operation of the code they annotate.

注解是一种元数据, 可以添加到java代码中类、方法、变量、参数、包都可以被注解,注解对注解的代码没有直接影响。之所以产生作用, 是对其解析后做了相应的处理。注解仅仅只是个标记罢了。

定义注解关键字:@interface

元注解

java内置的注解有Override, Deprecated, SuppressWarnings等, 作用相信大家都知道。

现在查看Override注解的源码

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

发现Override注解上面有两个注解, 这就是元注解元注解就是用来定义注解注解.其作用就是定义注解的作用范围, 使用在什么元素上等等。
元注解共有四种@Retention, @Target, @Inherited, @Documented

@Retention 保留的范围,默认值为CLASS.可选值有三种
  • SOURCE, 只在源码中可用
  • CLASS, 在源码字节码中可用
  • RUNTIME, 在源码字节码、运行时`均可用。

其中, @Retention是定义保留策略, 直接决定了我们用何种方式解析SOUCE级别的注解是用来标记的, 比如Override, SuppressWarnings. 我们真正使用的类型是CLASS(编译时)RUNTIME(运行时)

@Target 用来修饰哪些程序元素,

TYPE, METHOD, CONSTRUCTOR, FIELD, PARAMETER等,未标注则表示可修饰所有。

@Inherited 是否可以被继承,默认为false
@Documented 是否会保存到 Javadoc文档中

自定义注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface TestAnnotation {
    String value();
    String[] value2() default "value2";
}

类型 参数名() default 默认值;

其中默认值是可选的, 可以定义, 也可以不定义.

处理运行时注解

Retention的值为RUNTIME时, 注解会保留到运行时, 因此使用反射来解析注解。
使用的注解就是上一步的@TestAnnotation
先了解一下反射:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.什么是注解? 对程序代码本身的描述-代码元数据,一种约定的规范,包括格式、意义、作用域等。 2.基本概念 注解...
    半亩房顶阅读 750评论 0 1
  • 注解可以为Java代码中添加信息,然后在某个时刻去运用它。Java内置了三种注解,分别为: @Override,(...
    爱你雨落阅读 489评论 0 0
  • java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配...
    尼尔君阅读 574评论 0 0
  • 什么是注解(Annotation):Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和...
    九尾喵的薛定谔阅读 3,448评论 0 2
  • 这是工作以来第一次通宵加班,而且现在头脑昏沉地想来,这场领导们蓄谋已久的通宵加班,效率低得让我有些无言以对。 加班...
    骑驴书生阅读 647评论 1 51

友情链接更多精彩内容