java注解

java注解目前使用非常广泛,spring等框架都支持注解配置。其中注解Annotation的作用也比较明显:
1、可以生成文档;
2、可以简化配置;
3,在编译期间检查代码格式,如@override。

java定义注解是使用@interface声明,其中两个最主要的参数是@Retention(RetentionPolicy.RUNTIME)和

@Target(ElementType.TYPE)。Retention参数表示注释要保留多久。如果注释类型声明中不存在 Retention 注释,则保留策略默认为 RetentionPolicy.CLASS ;它有三种取值(代表三个阶段): RetentionPolicy.SOURCE:保留注解到java源文件阶段,例如Override、SuppressWarnings ,RetentionPolicy.CLASS:保留注解到class文件阶段, RetentionPolicy.RUNTIME:保留注解到运行时阶段即内存中的字节码,可以反射性地读取注解里的信息,可通过以下代码验证:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ExportFormat {
Class<?> className();
}

@ExportFormat(className=SettlePathExportFormat.class)
public class SettlePathDto {
public static void main(String[] args) throws Exception {
SettlePathDto dto = new SettlePathDto();
Class clazz = dto.getClass();
ExportFormat a = (ExportFormat)clazz.getAnnotation(ExportFormat.class);
System.out.println(a.className());
}
}

运行以上代码,发现只有RetentionPolicy.RUNTIME时,才能正常运行,否则都会报空指针,因为main是在jvm运行时去读取注解里的信息。

@Target(ElementType.TYPE):表示注解的作用域,有TYPE(类级别)、FIELD(字段)、METHOD(方法)等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值