Java注解

框架中大量使用注解。

注解是什么?

注解(Annotation)是一种标注,可以配置参数,参数可以有默认值,如果参数名是value,则可以省略参数名称。

如何定义注解?

定义一个注解的格式如下

	@Target(ElementType.TYPE)
	@Retention(RetentionPolicy.RUNTIME)
	public @interface MyAnnotation {
			String value() default "";
	}

用来修饰注解的注解成为 元注解 ,JDK定义好了元注解。

下面介绍比较重要的几个元注解:

@Target 用来定义注解作用于哪些位置。
ElementType.TYPE:类或接口
ElementType.FIELD:字段
ElementType.METHOD:方法
ElementType.CONSTRUCTOR:构造方法
ElementType.PARAMETER:方法参数

@Retention定义注解的生命周期
RetentionPolicy.SOURCE:编译期
RetentionPolicy.CLASS:class文件
RetentionPolicy.RUNTIME:运行期

.java 文件 —> .class文件 —> JVM加载运行,我们可以简单看作有这么三个时期。

.java 文件 —> .class文件 ,此时 RetentionPolicy.SOURCE:编译期 类型的注解已经被使用,不在.class文件中。例如@Override 为了让编译器检查我们的代码是否正确重写,检查完就不用保留了。
JVM加载运行后,就只剩 RetentionPolicy.RUNTIME:运行期 类型的注解了,一般自定义注解都是此种类型。
其中@Retention的默认值是Class,运行其反射读取的注解不能漏写@Retention(RetentionPolicy.RUNTIME)

@Inherited 定义子类是否可以继承父类的注解,仅针对@Target为TYPE类型的注解,仅对class的继承有效,对interface的继承无效。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值