團長大人的學習筆記——自定義Java註解

NO IMAGE

Java註解

註解式Java5後才產生的技術,為框架簡化代碼而存在的

註解的分類

  • 元註解(jdk自帶註解):如@Override@SuppessWarnings
  • 自定義註解
    創建註解只需要通過@interface就可以使用了
public @interface AddAnnotation {
}

定義註解

  • 使用@Target就可以指定你的註解只能放在哪裡

    比如@Target(ElementType.METHOD)就規定這個註解只能放在方法上

  • 使用@Retention用於描述註解的生命週期,

    比如@Retention(RetentionPolicy.RUNTIME)表示運行時有效

  • 還可以直接在註解裡定義成員變量,用default來定義默認值

    我寫出的示例如下

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AddAnnotation {
int userId() default 0;
String userName() default "默認名字";
String[] arrays();
}

調用時如下

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]);
}
}

相關文章

MongoDB入門篇

MangoDB的下載和安裝

團長大人的學習筆記——RabbitMQ

團長大人的學習筆記——Hibernate