解析注解類所涉及到的API
Field[] fields = cls.getDeclaredFields();//通過類的字節(jié)碼文件,獲取類的所有字段
boolean flag = field.isAnnotationPresent(HasColumn.class);//判斷這個(gè)字段有沒有加 HasColumn注解,如果有返回true,如果沒有返回false
HasColumn hasColumn = field.getAnnotation(HasColumn.class);//獲取這個(gè)注解,可以通過這個(gè)對象去獲得注解的屬性,
//工具:根據(jù)注解中的屬性order來排序list中存放的是要打印的字段
Field[] fields = cls.getDeclaredFields();
String[] strs = new String[fields.length];
//使用雙層循環(huán)來根據(jù)注解中的order排序
for (int i = 0; i < strs.length; i++) {
for (Field field : fields) {
if (field.isAnnotationPresent(HasColumn.class) == true) {
//在這的name只是一個(gè)HasColumn對象
HasColumn name = field.getAnnotation(HasColumn.class);
if (name.order() == (i + 1)) {
list.add(name.columnName());
}
}
}
}
解析注解的思路:自定義一個(gè)類,方法中傳進(jìn)來的Class clazz (被注解的類的class),反射獲得其所有字段,根據(jù)字段去判斷是否有注解(自定義的那個(gè),圖上的HasColumn),然后去操作