元注解-大致了解

元注解:

注解的注解 [@Target、@Retention、@Documented、@Inherited。]
自定义注解 @interface  声明一个注解,[定义的]方法名 对应 [使用的]参数名,返回值类型对应参数类型  即定义的方法作为变量使用!
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface LogAnnotation {
    String module() default "";
}
1.Target    定义注解的使用位置,没有该项,表示注解可以用于任何地方
2.Retention        指明修饰的注解的生存周期,即会保留到哪个阶段。 
    SOURCE:源码级别保留,编译后即丢弃。
    CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
    RUNTIME:运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用
3.Documented    可以被例如javadoc此类的工具文档化只负责标记,没有成员取值
4.Inherited        标注一个父类的注解是否可以被子类继承,如果一个注解需要被其子类所继承,则在声明时直接使用@Inherited注解

1.自定义注解

@Target(ElementType.TYPE)  位置
@Retention(RetentionPolicy.RUNTIME) 周期
@Documented
//如果父类使用了HeritedApplication注解,则子类应该继承
@Inherited

@MyAnnoation
@interface HeritedApplication {
}
2.父类使用自定义注解
//父类使用了@HeritedApplication注解
@HeritedApplication
class Person {}
3.子类继承父类
class Student extends Person{}
4.main方法中判断子类是否继承自定义注解·

Class clazz = Student.class;
        //Student类是否有@HeritedApplication
        if(clazz.isAnnotationPresent(HeritedApplication.class)){
            System.out.println("true");//true 因为@Inherited表明该注解可被子类继承
        }
```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值