java 註解
阿新 • • 發佈:2020-09-16
註解(Annotation)就像一個標籤,用於為 Java 程式碼提供元資料。作為元資料,註解不直接影響你的程式碼執行,但也有一些型別的註解實際上可以用於這一目的。
JDK預置註解包括: @Deprecated,即將廢棄的標記; @Override,表示當前的方法定義將覆蓋超類中的方法; @SuppressWarnings,阻止警告的意思 @SafeVarargs,引數安全型別註解 @FunctionalInterface,函式式介面註解元註解
元註解是可以註解到註解上的註解,或者說元註解是一種基本註解,但是它能夠應用到其它的註解上面。 @Retention,註解的存活時間,取值如下:- RetentionPolicy.SOURCE,註解只在原始碼階段保留,將被編譯器丟棄;
- RetentionPolicy.CLASS,註解保留到編譯期間,將被VM丟棄;
- RetentionPolicy.RUNTIME,註解保留到執行期間,因此可以通過反射機制讀取註解的資訊;
- ElementType.ANNOTATION_TYPE,可以給一個註解進行註解
- ElementType.CONSTRUCTOR,可以給構造方法進行註解
- ElementType.FIELD,可以給屬性進行註解
- ElementType.LOCAL_VARIABLE,可以給區域性變數進行註解
- ElementType.METHOD,可以給方法進行註解
- ElementType.PACKAGE,可以給一個包進行註解
- ElementType.PARAMETER,可以給一個方法內的引數進行註解
- ElementType.TYPE,可以給一個型別進行註解,比如類、介面、列舉
獲取註解資訊
/** * 獲取實體類上註解中國的所有欄位名 * * @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(); }