java注解

目录

一、什么是注解?

二、注解的架构

三、java自带的Annotation

四、Annotation定义 

五、自定义注解


一、什么是注解?

        java注解(Annotation)是jdk5.0引入的一种注释机制。java中的类、方法、变量、参数和包等都可以被注解,java注解可以通过反射获取标注内容。在编译器生成类文件时,注解可以被嵌入到字节码中 。java虚拟机可以保留注解内容,在运行时可以获取到注解内容。支持java标注。

二、注解的架构

一个注解(Annotation)有唯一的RetentionPolicy属性和若干个ElementType属性。

1.Annotation是个接口。

2.RetentionPolicy是Enum枚举类型,用来指定Annotation的策略。

3.ElementType是Enum枚举类型,用来指定Annotation的类型。

 不同RetentionPolicy类型的Annotation的作用域不同。

1.SOURCE:Annotation仅存在于编译器处理期间,编译器处理完后,该Annotation就没用了。

2.CLASS:编译器将Annotation存储于类对应的.class文件中(默认值)

3. RUNTIME:编译器将Annotation存储于class文件中,并且可由JVM读取。

不同的ElementType类型的Annotation修饰的类型不同

1.TYPE:类、接口(包括注释类型)、枚举声明

2.FIELD:字段声明

3.METHOD:方法

4.PARAMETER:参数

5.CONSTRUCTOR:构造方法

6.LOCAL_VarIABLE:局部变量

7.ANNOTATION_TYPE:注释类型

8.PACKAGE:包

三、java自带的Annotation

        此部分内容请参照java注解 -- java自带的注解_笨不拉几的菜鸟的博客-CSDN博客 

四、Annotation定义 

@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface MyAnnotation {
}

@interface

1.定义Annotation时,@interface是必须的

2.该注解意味着它实现了java.lang.annotaion.Annotation接口,即成为了一个Annotation

3.Annotation接口的实现细节都由编译器完成。

4.使用@interface定义注解后,该注解不能继承其他的注解或者接口。

@Documented

1.类和方法的Annotation在缺省情况下是不会出现在javadoc中的,如果使用@Documented修饰该Annotation,则表示该注解可以出现在javadoc中。

2.定义Annotation时,@Documented可有可无,若没有定义,则Annotation不会出现在Javadoc中

@Target

1.@Target用来指定Annotation的类型属性ElementType(可选值见文章上方)

2.定义Annotation时,@Target可有可无,若有@Target,则该Annotation只能用于它所指定的地方,若没有@Target,则该Annotation可以用于任何地方。

@Retention

1.@Retention用于指定Annotation的策略属性RetentionPolicy(可选值见文章上方)

2.定义Annotation时,@Retention可有可无,若没有@Retention,则默认是Retention.CLASS

@Inherited

1.控制父类类上的注解能否被子类继承

2.若父类上的注解使用了@Inherited,则子类可以继承父类中的该注解

五、自定义注解

详见java注解 -- 自定义java注解_笨不拉几的菜鸟的博客-CSDN博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值