解析注解类所涉及到的API
Field[] fields = cls.getDeclaredFields();//通过类的字节码文件,获取类的所有字段
boolean flag = field.isAnnotationPresent(HasColumn.class);//判断这个字段有没有加 HasColumn注解,如果有返回true,如果没有返回false
HasColumn hasColumn = field.getAnnotation(HasColumn.class);//获取这个注解,可以通过这个对象去获得注解的属性,
//工具:根据注解中的属性order来排序list中存放的是要打印的字段
Field[] fields = cls.getDeclaredFields();
String[] strs = new String[fields.length];
//使用双层循环来根据注解中的order排序
for (int i = 0; i < strs.length; i++) {
for (Field field : fields) {
if (field.isAnnotationPresent(HasColumn.class) == true) {
//在这的name只是一个HasColumn对象
HasColumn name = field.getAnnotation(HasColumn.class);
if (name.order() == (i + 1)) {
list.add(name.columnName());
}
}
}
}
解析注解的思路:自定义一个类,方法中传进来的Class clazz (被注解的类的class),反射获得其所有字段,根据字段去判断是否有注解(自定义的那个,图上的HasColumn),然后去操作