首页 新闻 搜索 专区 学院

Java 如何获取一个未知对象类型的getXXX()方法的值

0
悬赏园豆:10 [已解决问题] 解决于 2013-01-23 14:37
protected void mySerializeJosnForAjax(Collection<?> collection){
JSONArray array = new JSONArray();
JSONObject js = new JSONObject();
try {
if(collection.size()>0){
for (Object object : collection) {
JSONObject json = new JSONObject();
Object instance = null;
Class<?> userClass = Class.forName(object.getClass().getName()); //返回与带有给定字符串名的类或接口相关联的 Class 对象
instance = userClass.newInstance(); // 创建此 Class 对象所表示的类的一个新实例。
instance = myReferenceObject(object);
Method[] methods = userClass.getMethods();//获得该类的所有方法
for (Method method : methods) {
String methodName = method.getName();//获得方法名
if(methodName.substring(0,3).equals("get")){//获得"get"方法
//获取属性名 setName
String paramName = methodName.substring(3,4).toLowerCase()+methodName.substring(4);
json.put(paramName, "instance."+methodName+"()");
}
}
array.put(json);
}

// js.put("total",total);
// js.put("page",page);
// js.put("rp",rp);
// js.put("sortname",sortname);
// js.put("sortorder",sortorder);

js.put("rows", array);
}else{
js.put("rows", "none");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

现在问题就是这里:json.put(paramName, userClass.getMethod(methodName, null));
我获取不了getXXX()值的,json  put进去的时候只是一窜方法名,
如:{"name":"public java.lang.String b2c.members.model.Member.getName()"}

e.FLY的主页 e.FLY | 初学一级 | 园豆:165
提问于:2012-04-07 01:01
< >
分享
最佳答案
0

Object invoke = method.invoke(object, null);
json.put(paramName, invoke);

e.FLY | 初学一级 |园豆:165 | 2012-04-22 20:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册