java专题

关于注解处理器的一些思路和API

2017-02-22  本文已影响14人  H_Man

解析注解类所涉及到的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),然后去操作

上一篇 下一篇

猜你喜欢

热点阅读