1. 程式人生 > 實用技巧 >java 註解

java 註解

註解(Annotation)就像一個標籤,用於為 Java 程式碼提供元資料。作為元資料,註解不直接影響你的程式碼執行,但也有一些型別的註解實際上可以用於這一目的。

JDK預置註解包括: @Deprecated,即將廢棄的標記; @Override,表示當前的方法定義將覆蓋超類中的方法; @SuppressWarnings,阻止警告的意思 @SafeVarargs,引數安全型別註解 @FunctionalInterface,函式式介面註解

元註解

元註解是可以註解到註解上的註解,或者說元註解是一種基本註解,但是它能夠應用到其它的註解上面。 @Retention,註解的存活時間,取值如下:
  • RetentionPolicy.SOURCE,註解只在原始碼階段保留,將被編譯器丟棄;
  • RetentionPolicy.CLASS,註解保留到編譯期間,將被VM丟棄;
  • RetentionPolicy.RUNTIME,註解保留到執行期間,因此可以通過反射機制讀取註解的資訊;
@Target,限定註解應用的場景,註解可以加在包、類,屬性、方法,方法的引數以及區域性變數上,取值如下:
  • ElementType.ANNOTATION_TYPE,可以給一個註解進行註解
  • ElementType.CONSTRUCTOR,可以給構造方法進行註解
  • ElementType.FIELD,可以給屬性進行註解
  • ElementType.LOCAL_VARIABLE,可以給區域性變數進行註解
  • ElementType.METHOD,可以給方法進行註解
  • ElementType.PACKAGE,可以給一個包進行註解
  • ElementType.PARAMETER,可以給一個方法內的引數進行註解
  • ElementType.TYPE,可以給一個型別進行註解,比如類、介面、列舉
@Repeatable,註解可以被多次應用 @Inherited,而是說如果一個超類被 @Inherited 註解過的註解進行註解的話,那麼如果它的子類沒有被任何註解應用的話,那麼這個子類就繼承了超類的註解。 @Documented,將註解中的元素包含到Javadoc中;

獲取註解資訊

/**
     * 獲取實體類上註解中國的所有欄位名
     *
     * @param type
     * @return java.util.List<java.lang.String>
     * @author CYH
     * @date 2020/5/27 0027 11:35
     *
*/ public static <T> List<String> getEntityFieldList(Class<T> type) { try { List<String> list = new ArrayList<>(); Field[] fields = type.getDeclaredFields(); for (Field field : fields) { list.add(field.getAnnotation(FieldColumn.class).value()); } return list; } catch (Exception e) { e.printStackTrace(); return null; } }
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldColumn {
    public String value();
}