getDeclaredMethod如何在java中工作

时间:2014-01-22 22:08:29

标签: java

我不确定“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是我想要获得方法答案的对象的类 任何帮助都会很棒。

亚当

2 个答案:

答案 0 :(得分:2)

由于mbody_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

的任何实例传递给它

参考:Method.invoke() doc

但是,我必须同意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()