Java注解

注解(Annotation)

注解的分类

按运行机制分类
.源码注解:在源码中存在,编译成.class文件后就不存在了
.编译时注解:注解在源码和.class文件中都存在(JDK自带注解都属于编译时注解)
.运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解,可通过反射读取(@Autowired)
按来源分类
.来自JDK的注解
.来自第三方的注解
.自己定义的注解
元注解
给注解进行注解

JDK自带注解

@Override:重写
@Deprecated:过时
@Suppvisewarnings:忽略警告

第三方注解

Spring
@Autowired:自动注入
@Service
@Repository
Mybatis
@InsertProvider:插入
@UpdateProvider:更新
@Options

自定义注解

    @Target({ElementType.METHOD,ElementType.TYPE})  
    /*Target是注解的作用域 ROURCE、CLASS、RUNTIME*/
    @Retention(RetentionPolicy.RUNTIME)
    /*Retention是生命周期*/  
    @Inherited
    /*Inherited允许子类继承*/
    @Documented 
    /*Documented,生成javadoc时会生成注解信息*/
    public @interface Description{  //.使用@interface关键字定义注解
    String desc();  //.成员以无参无异常方式声明
    int age() default 18; //.可以用default为成员指定一个默认值

    /*如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)*/
    /*注解类可以没有成员,没有成员的注解称为标识注解*/
    /*  成员类型只能为基本数据类型及String,Class,Annotation,Enumeration   */

解析注解

通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑

步骤

.使用类加载器动态加载类
Class c = Class.forName("com.test.Child");
.找到类上面的注解
boolean isExist = c.isAnnotationPresent(Description.class)
.拿到注解实例
Description d = (Description)c.getAnnotation(Description.class)
/*Description是注解名*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值