62,614
社区成员
发帖
与我相关
我的任务
分享
public Object uniqueResult (final Class cls) throws InstantiationException, IllegalAccessException, IllegalArgumentException, {
// 根据类对象信息生成实体
Object obj = cls.newInstance();
// 获得类对象中的字段
Field[] fields = cls.getDeclaredFields();
// 设置为可访问
AccessibleObject.setAccessible(fields, true);
// 循环给字段设置value
for (int i=0; i<fields.length; i++) {
// 得到一个字段
Field field = fields[i];
// 不是常量, 并且不是静态的字段
if ( Modifier.isStatic(field.getModifiers())==false && Modifier.isFinal(field.getModifiers())==false ) {
// 得到字段类型
String fieldType = field.getType().toString();
// 字段的值
Object columnValue = 某某某;
// 如果字段的值为空,继续下一次循环
if (columnValue == null){ continue; }
// 如果声明是 String 类型
if (Pattern.matches("^(.*)(String){1}", fieldType)){
field.set(obj, columnValue.toString());
// 如果声明是 Timestamp 类型
} else if (Pattern.matches("^(.*)(Timestamp){1}", fieldType)) {
field.set(obj, Timestamp.valueOf(columnValue.toString()));
// 如果声明是 int 类型
} else if (Pattern.matches("^(.*)(int){1}", fieldType)) {
field.setInt(obj, new Integer(columnValue.toString()).intValue());
// 如果声明是 Integer 类型
} else if (Pattern.matches("^(.*)(Integer){1}", fieldType)){
field.set(obj, new Integer(columnValue.toString()));
}
}
}
return obj;
}
try{
Test test = new Test();
Field field = Test.class.getDeclaredField("a");
//如果不是public的就需要调用以下代码才可以,如果是public的可以不需要
//field.setAccessible(true);
field.set(test, "1");
}catch(Exception e){}