这样写java注解有啥作用?

@FirstAnno(i = 3, d = 5.1, ins = 3)
public class AnnotationDemo {

    @FirstAnno(i = 3, d = 5.1, ins = 3)
    int i = 5;
    double d = 3.2;

    @FirstAnno(i = 3, d = 5.1, ins = 3)
    public static void main(String[] args) {
        
        int j = 3;
        System.out.println(j);
    }
}

@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.CLASS)
@interface FirstAnno {

    // int i = 5;
    // 定义了一个属性i
    int i();

    // 表示给属性d一个默认值3.2
    double d() default 3.2;

    int[] ins();
}

我已经知道了注解是用来给编译器提示 以及代码功能注释

这段代码设置了变量i,d,ins

是在哪里用的?

阅读 1.6k
1 个回答

自定义的注解,也需要自定义解析器。所谓解析不过就是用反射机制获取类、方法、成员变量等上面的注解,然后获取注解里i,d等信息进行其他处理,比如可以获取注解里的i,然后用反射赋值给AnnotationDemo实例对象里的i。

推荐问题