注解111

自定义注解

//使用元注解解释说明注解
//@Target(value = {ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD}) // @Target只有1个value参数  写不写都可以
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public @interface 名称{  
}

组成部分

数据类型: 字面量数据类型(基本类型+String),枚举类型, Class类型, 以上类型的数组类型
数据类型 参数名称() default 默认值;

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
   int id();
   String name();
   double score();
   String[] hobby();
}

获取注解内容(反射)

获取类上注解内容

private static void fuction1() {
       //1.获得类上的注解内容(类对象获取注解对象)
       MyAnnotation annotation = studentClass.getAnnotation(MyAnnotation.class);//传进注解的类对象
       System.out.println(annotation.id());
       System.out.println(Arrays.toString(annotation.hobby()));

       //1.1 获得全部
       Annotation[] annotations = studentClass.getDeclaredAnnotations();
       for (Annotation an : annotations) {
           System.out.println(an);
       }
       System.out.println("------------------");
       annotations = studentClass.getAnnotations();
       for (Annotation an : annotations) {
           System.out.println(an);
       }

获取方法上注解上的方法

private static void fuction2() throws NoSuchMethodException {
       //2.获得方法上的注解内容
       //2.1,需要先通过反射获得方法
       Method a = studentClass.getMethod("a");
       Annotation[] annotations1 = a.getDeclaredAnnotations();
       for (Annotation a1 : annotations1) {
           System.out.println(a1);
       }
       System.out.println("------------");
       annotations1 = a.getAnnotations();
       for (Annotation a1 : annotations1) {
           System.out.println(a1);
       }
   }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值