关于Java反射的问题

[code="java"]
List list = new ArrayList();
User user0 = new User();
user0.setUsername("ty");
user0.setAge(24);
user0.setTel("137***");
user0.setAddress("南京");
list.add(user0);

    User user1 = new User();
    user1.setUsername("tz");
    user1.setAge(21);
    user1.setTel("158***");
    user1.setAddress("南京");
    list.add(user1);
    String jsonArray = JSONHelper.getJSONByBeanList(list);
    System.out.println(jsonArray);

[/code]

[code="java"]
public static String getJSONByBeanList(List<?> list) {
try {
Class<?> clazz = list.get(0).getClass();
Field fields[] = clazz.getDeclaredFields();
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < fields.length; j++) {
Object objectCopy = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});
String fieldName = fields[j].getName();

String firstLetter = fieldName.substring(0, 1).toUpperCase(); // 获得和属性对应的getXXX()方法的名字
String getMethodName = "get" + firstLetter + fieldName.substring(1); // 获得和属性对应的setXXX()方法的名字

String setMethodName = "set" + firstLetter + fieldName.substring(1); // 获得和属性对应的getXXX()方法
Method getMethod = clazz.getMethod(getMethodName,new Class[] {}); // 获得和属性对应的setXXX()方法
Method setMethod = clazz.getMethod(setMethodName, new Class[] { fields[j].getType() }); // 调用原对象的getXXX()方法
Object value = getMethod.invoke(objectCopy, new Object[]{});
System.out.println(fieldName+" "+value);
}
}
} catch (JSONException e) {
throw new JSONException("");
}catch (SecurityException e) {
e.printStackTrace();
}catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
}catch (IllegalAccessException e) {
e.printStackTrace();
}catch (InvocationTargetException e) {
e.printStackTrace();
}catch (InstantiationException e) {
e.printStackTrace();
}
return "";
}
[/code]

现在的问题是,如果传一个单一的Bean那可以获得bean的名字和值,但是把多个Bean存入List,这时候我就 [color=red][size=xx-large]吐血了[/size][/color]

我的其主要目的就是为了转换成json,我没用org.json那些jar包。
请教一下兄弟能否告诉我这么搞,我很纠结,小弟万分感谢
非诚勿扰。。。。

不好意思,写错了
[code="java"]
for (int i = 0; i < list.size(); i++) {

Class<?> clazz = list.get(i).getClass();

Field fields[] = clazz.getDeclaredFields();

Object objectCopy = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});

for (int j = 0; j < fields.length; j++) {

String fieldName = fields[j].getName();

String firstLetter = fieldName.substring(0, 1).toUpperCase();
// 获得和属性对应的getXXX()方法的名字

String getMethodName = "get" + firstLetter + fieldName.substring(1);
// 获得和属性对应的setXXX()方法的名字

String setMethodName = "set" + firstLetter + fieldName.substring(1);
// 获得和属性对应的getXXX()方法

Method getMethod = clazz.getMethod(getMethodName,new Class[] {});
// 获得和属性对应的setXXX()方法

Method setMethod = clazz.getMethod(getMethodName, new Class[] { fields[j].getType() }); // 调用原对象的getXXX()方法 !!

Object value = getMethod.invoke(list.get(i), new Object[]{});

setMethod.invoke(objectCopy , new Object[]{value });//!!!!

System.out.println(fieldName+" "+value);

}

}
[/code]

如果你要拷贝对象:
[code="java"]
for (int i = 0; i < list.size(); i++) {

Class<?> clazz = list.get(i).getClass();

Field fields[] = clazz.getDeclaredFields();
Object objectCopy = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});

for (int j = 0; j < fields.length; j++) {

String fieldName = fields[j].getName();

String firstLetter = fieldName.substring(0, 1).toUpperCase(); // 获得和属性对应的getXXX()方法的名字

String getMethodName = "get" + firstLetter + fieldName.substring(1); // 获得和属性对应的setXXX()方法的名字

String setMethodName = "set" + firstLetter + fieldName.substring(1); // 获得和属性对应的getXXX()方法

Method getMethod = clazz.getMethod(getMethodName,new Class[] {}); // 获得和属性对应的setXXX()方法

Method setMethod = clazz.getMethod(setMethodName, new Class[] { fields[j].getType() }); // 调用原对象的getXXX()方法

Object value = getMethod.invoke(list.get(i), new Object[]{});
setMethod.invoke(objectCopy , new Object[]{value });//!!!!
System.out.println(fieldName+" "+value);

}

}

[/code]