[b][size=medium]注意 : 自定义的Annotation中必须声明[color=red]@Retention(RetentionPolicy.RUNTIME)[/color] . 不然不能获取 注解的值[/size][/b]
[b]1. 自定义Annotation[/b]
[b]2. Bean对象[/b]
3. 获取属性的值
[b]1. 自定义Annotation[/b]
@Retention(RetentionPolicy.RUNTIME)
public @interface Hidden {
boolean value();
}
[b]2. Bean对象[/b]
public class CompanyBean {
@Hidden(true)
@Header("公司ID")
private int companyId;
@Header("公司编码")
private String member;
@Header("公司名称")
private String companyName;
.....
3. 获取属性的值
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = null;
Field[] fields = CompanyBean.class.getDeclaredFields();
for(Field f : fields){
jsonObject = new JSONObject();
Class cls = f.getType();
Hidden hidden = f.getAnnotation(Hidden.class);
if(hidden != null){
boolean isHidden = hidden.value();
jsonObject.put("hidden", isHidden);
}
Header header = f.getAnnotation(Header.class);
System.out.println(header);
if(header != null) {
jsonObject.put("header", header.value());
}
jsonObject.put("name", f.getName());
if(!"String".equals(cls.getSimpleName())) jsonObject.put("type", cls.getSimpleName());
if("Date".equals(cls.getSimpleName())) {
jsonObject.put("type", "date");
jsonObject.put("dateFormat", "Y-m-d");
}
jsonArray.add(jsonObject);
}
System.out.println(jsonArray);