自定义注解

/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/12 14:01
 */
public @interface MyBook {
    String name();
    String[] authors();
    double prices();
}
元注解
- @Target:约束自定义注解只能在那些地方使用
 
- @Retention:申明注解的生命周期
 
注解的解析
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/12 14:01
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyBook {
    String name();
    String[] authors();
    double prices();
}
import org.junit.Test;
/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/12 14:01
 */
public class AnnotationDemo {
    @Test
    public void testAnnotationParse() {
        final Class c = book.class;
        if(c.isAnnotationPresent(MyBook.class)){
            MyBook myBook = (MyBook) c.getDeclaredAnnotation(MyBook.class);
            System.out.println(myBook.name());
            System.out.println(myBook.authors());
            System.out.println(myBook.prices());
        }
    }
}
@MyBook(name = "Java", authors = {"elem " , "Object"},prices = 11.2)
class book{
}
@interface MyBook {
    String name();
    String[] authors();
    double prices();
}