自定义注解主要是要掌握四个元注解@Target, @Retention,@Documented,@Inherited,他们的意思分别如下
下面是一个具体的例子,注意注释定义中的
String name()
并不是定义一个name方法,而是定义一个name属性,该属性的类型是String
package com.loubin;import java.lang.annotation.*;public class Main {public static void main(String[] args) {User user = new User();user.setName("哈哈");System.out.println(user.getName());} }@MyClassAnnotation(name = "User") class User{@MyFieldAnnotation(name = "张三")String name;public String getName() {return name;}public void setName(String name) {this.name = name;} }@Target(value = ElementType.TYPE) @Retention(value = RetentionPolicy.RUNTIME) @Documented @Inherited @interface MyClassAnnotation{String name(); }@Target(value = ElementType.FIELD) @Retention(value = RetentionPolicy.RUNTIME) @Documented @Inherited @interface MyFieldAnnotation{String name(); }
定义注解的一些注意事项