我不确定“getDeclaredMethod”在java中是如何工作的,有人可以解释如何从方法中获取值,这就是我所拥有的......
我想得到这个值(body_number),它在AIBody类中。
public int getBody_number() {
return body_number;
}
在同一个班级我有这个
Method m = body_A.getUserData().getClass().getDeclaredMethod("getBody_number", null);
我如何从m获得“body_number”值?
ps getUserData是我想要获得方法答案的对象的类 任何帮助都会很棒。
亚当
答案 0 :(得分:2)
由于m
是body_A.getUserData()
返回的任何对象的实例方法,并且它不带参数,所以你可以这样做:
Method m = body_A.getUserData().getClass().getDeclaredMethod(
"getBody_number", null
);
int val = (Integer) m.invoke(body_A.getUserData());
(你必须将它包装在try / catch中,或者在执行此代码的方法中声明相应的throws
。)
当然,一旦你拥有Method
对象,你不仅限于为body_A.getUserData()
返回的对象调用它;您可以将AIBody
。
但是,我必须同意what Bhaskar wrote:你为什么要使用反射呢?您只需致电:
int val = body_A.getUserData().getBody_number();
答案 1 :(得分:1)
您将获得java.lang.reflect.Method的实例,您可以在其上使用调用方法
int val = ((Integer)m.invoke(body_A.getUserData())).intValue()
您可能想要考虑在这种情况下使用反射的原因而不仅仅是
body_A.getUserData().getBody_number()