1、获取Class三种方式:
(1)通过class字符串:
Class entityClass = Class.forName("com.loan.back.entity.Article");
(2)通过对象获取:
Class entityClass1=entityObject.getClass();
(3)通过实体类获取
Class entityClass1=实体类.class;
2、根据类获取属性
Field[] f = entityClass.getDeclaredFields();
3、获取属性类型
for (Field field : f) {
System.out.println(field.getType().getName());
}
4、创建对象
Object entityObject=entityClass.newInstance();
5、给属性赋值
field.setAccessible(true);
field.set(entityObject, Long.parseLong("1"));
6、例子:通过className获取属性,与字典配置的属性以及对应到value进行匹配,赋值给对象,并返回
private Object getObjectFromClassName(String role, String code, String className)
throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Class entityClass = Class.forName(className);
Object entityObject = entityClass.newInstance();
Dictionary dic = new Dictionary();
dic.setCode(code);
List<Dictionary> dicList = dictionaryService.find(dic);
for (Dictionary dictionary : dicList) {
String dicRole = dictionary.getName();
if (dicRole.equals(role)) {
String[] propList = dictionary.getDescription().split(",");
String[] valueList = dictionary.getValue().split(",");
if (propList.length == valueList.length) {
Field[] f = entityClass.getDeclaredFields();
for (Field field : f) {
for (int i = 0; i < propList.length; i++) {
if (field.getName().equals(propList[i])) {
field.setAccessible(true);
switch (field.getType().getName()) {
case "java.lang.Long":
field.set(entityObject, Long.parseLong(valueList[i]));
break;
case "java.lang.Integer":
field.set(entityObject, Integer.parseInt(valueList[i]));
break;
case "java.lang.Boolean":
if(valueList[i].equals("1")){
field.set(entityObject, true);
}
else{
field.set(entityObject, false);
}
break;
default:
field.set(entityObject, valueList[i]);
break;
}
}
}
}
}
}
}
return entityObject;
}