private Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(o, new Object[] {});
return value;
} catch (Exception e) {
log.error(e.getMessage(),e);
return null;
}
}
private String[] getFiledName(Object o){
Field[] fields=o.getClass().getDeclaredFields();
String[] fieldNames=new String[fields.length];
for(int i=0;i<fields.length;i++){
System.out.println(fields[i].getType());
fieldNames[i]=fields[i].getName();
}
return fieldNames;
}
private List getFiledsInfo(Object o){
Field[] fields=o.getClass().getDeclaredFields();
String[] fieldNames=new String[fields.length];
List list = new ArrayList();
Map infoMap=null;
for(int i=0;i<fields.length;i++){
infoMap = new HashMap();
infoMap.put("type", fields[i].getType().toString());
infoMap.put("name", fields[i].getName());
infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
list.add(infoMap);
}
return list;
}
public Object[] getFiledValues(Object o){
String[] fieldNames=this.getFiledName(o);
Object[] value=new Object[fieldNames.length];
for(int i=0;i<fieldNames.length;i++){
value[i]=this.getFieldValueByName(fieldNames[i], o);
}
return value;
}
获取一个类的父类
public class MyClass implements Cloneable {
public static void main(String[] args) {
Object o = new String();
Class sup = o.getClass().getSuperclass();
System.out.println(sup);
o = new Object();
sup = o.getClass().getSuperclass();
System.out.println(sup);
Runnable o2 = new Runnable() {
public void run() {
}
};
sup = o2.getClass().getSuperclass();
System.out.println(sup);
}
}
获取一个类的所有的父类class
public static List<Class<?>> getAllClass(List<Class<?>> classList,Class<?> rootClass){
Class<?> superclass = rootClass.getSuperclass();
if (rootClass == Object.class){
return classList;
}else {
classList.add(rootClass);
getAllClass(classList,superclass);
}
return classList;
}
传入一个Object,和字段删除指定字段
public static Object clearFiled(Object o, String filedName) {
Class<?> rootClass = o.getClass();
try {
Field declaredField = rootClass.getDeclaredField(filedName);
if (!declaredField.isAccessible())
declaredField.setAccessible(true);
declaredField.set(o, null);
if (declaredField.isAccessible())
declaredField.setAccessible(false);
return o;
} catch (NoSuchFieldException e) {
log.error("属性值不存在,如果父类是object则停止迭代,返回对象");
if (rootClass.getSuperclass() == Object.class)
return o;
return clearFiled(BeanUtil.copyProperties(o, rootClass.getSuperclass()), filedName);
}catch (IllegalAccessException e){
log.error("非法访问异常",e);
return o;
}
}
根据权限json筛选结果集的数据,配合上一条使用
public static void main(String[] args) throws IllegalAccessException, InstantiationException {
String ac = "{\"aboutUs\":1,\"academics\":1,\"companyId\":1,\"companyType\":1,\"customContents\":1,\"id\":1,\"ourMission\":1,\"ourVision\":1,\"tags\":1,\"自定义大标题1\":1,\"自定义大标题2\":1}";
ArrayList<BasicDocument> basicDocuments = new ArrayList<>();
basicDocuments.add(new BasicDocument("企业的文化", "文化"));
basicDocuments.add(new BasicDocument("企业的政策", "政策"));
basicDocuments.add(new BasicDocument("联系电话", "电话"));
CustomContent customContent = new CustomContent("自定义大标题1");
customContent.setDocuments(basicDocuments);
CustomContent customContent2 = new CustomContent("自定义大标题2");
customContent.setDocuments(basicDocuments);
ArrayList<CustomContent> contents = new ArrayList<>();
contents.add(customContent);
contents.add(customContent2);
EducationOptionalInfo edu = new EducationOptionalInfo();
edu.setCustomContents(contents);
edu.setAboutUs(new AboutUs("关于我们啊", "关于我们噻"));
edu.setCompanyId(17229L);
edu.setCompanyType(1);
edu.setId(new ObjectId());
edu.setOurMission(new OurMission("我们的xxx", "xxxx"));
Object result=edu;
HashMap<String,Integer> accMap = JSONObject.parseObject(ac, HashMap.class);
Set<Map.Entry<String, Integer>> entries = accMap.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
if (entry.getValue()==0) {
result = clearFiled(edu, entry.getKey());
}
}
System.out.println(result);
}