public static void main(String[] args){
User u = new User();
User t = new User();
t = findIt(u);
}
class Object findIt(Object obj){
String test = "userId:1;userName:frank;password:1234;date:1328241269734;count:1";
//如何实现
}
这个代码如何实现,通过u传给findIt方法把字符串中的值写道t当中返回
------解决方案--------------------
String[] str = test.split(";");
Class<User> clazz = User.class;
User user = new User();
for(String str1;str){
Field field = clazz.getField(str1.split(":")[0]);//根据字段名获取字段对象
field.setAccessible(true);//将该字段设置为可访问
field.setValue(user,str1.split(":")[1]);//给user对象上的该字段赋值
};
------解决方案--------------------
String[] str = test.split(";");
Class<User> clazz = User.class;
User user = new User();
for(String str1;str){
Field field = clazz.getField(str1.split(":")[0]);//根据字段名获取字段对象
field.setAccessible(true);//将该字段设置为可访问
field.set(user,str1.split(":")[1]);//给user对象上的该字段赋值
};
搞错了 field.set(user,str1.split(":")[1]);//给user对象上的该字段赋值(这个地方改一下)
------解决方案--------------------
------解决方案--------------------
- Java code
public class ReflectTest { public static void main(String[] args) { User user = (User) test( "userId:1;userName:frank;password:1234;date:1328241269734;count:1", User.class); System.out.println(user.getUserName()); } private static Object test(String userStr, Class<?> clazz) { try { String[] str = userStr.split(";"); Object user = clazz.newInstance();// 初始化一个对象 Field[] fields = clazz.getDeclaredFields();// 获取该对象所有字段 for (String str1 : str) { for (Field field : fields) { String c = field.getType().getName();// 字段类型 if (field.getName().equals(str1.split(":")[0])) { field.setAccessible(true);// 把字段设置为可访问 if (c.equals("int")) { field.setInt(user, Integer .parseInt(str1.split(":")[1])); } else if (c.equals("java.lang.String")) { field.set(user, str1.split(":")[1]); } else if (c.equals("java.lang.long")) { field.setLong(user, Long .parseLong(str1.split(":")[1])); } } } } return user; } catch (Exception e) { e.printStackTrace(); } return null; }}