註解式Java5後才產生的技術,爲框架簡化代碼而存在的
框架
@Override
、@SuppessWarnings
等@interface
就能夠使用了public @interface AddAnnotation {
}
複製代碼
@Target
就能夠指定你的註解只能放在哪裏
好比
@Target(ElementType.METHOD)
就規定這個註解只能放在方法上ide
@Retention
用於描述註解的生命週期,
好比
@Retention(RetentionPolicy.RUNTIME)
表示運行時有效spa
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AddAnnotation {
int userId() default 0;
String userName() default "默認名字";
String[] arrays();
}
複製代碼
調用時以下code
public class User {
@AddAnnotation(userId = 3,arrays = {"123","321"})
public void add() {
}
}
複製代碼
直接上代碼對象
public static void main(String[] args) throws ClassNotFoundException {
Class<?> targetClass = Class.forName("com.libi.entity.User");
//獲取當前類全部的方法(不包括父類的方法)
Method[] declaredMethods = targetClass.getDeclaredMethods();
for (Method declaredMethod : declaredMethods) {
//拿到這個方法上的這個註解對象
AddAnnotation addAnnotation = declaredMethod.getDeclaredAnnotation(AddAnnotation.class);
if (addAnnotation == null) {
//若是爲空表示這個方法沒有這個註解
continue;
}
//這裏表示拿到了這個註解
System.out.println("userId:"+ addAnnotation.userId());
System.out.println("userName:"+ addAnnotation.userName());
System.out.println("arrays:"+ addAnnotation.arrays()[0]);
}
}
複製代碼