如何使用反射在java中调用void方法

Bis*_*128 3 java reflection

如果我使用反射调用一个方法,我可以让它正常工作而不抛出空指针异常的唯一方法是在我调用的方法中返回一个int值.

例如,我想调用的方法:

public int setScore(int n)
{
this.score = n;
return 1;
}
Run Code Online (Sandbox Code Playgroud)

我称之为:

Method setScore = myClass.getMethod("setScore", new Class<?>[]{int.class});
Object returnValue = setScore.invoke(builder, new Object[]{theScore});
Run Code Online (Sandbox Code Playgroud)

将返回类型更改为void并调用它似乎总是抛出空指针异常.我是否需要改变我接近无效方法的方法?

谢谢

Tom*_*icz 5

你能告诉我们NullPointerException扔的地方吗?此代码正常工作:

public void setScore(int n)
{
    this.score = n;
}
Run Code Online (Sandbox Code Playgroud)

请注意,我使用varargs简化了一些代码:

Method setScore = builder.getClass().getMethod("setScore", int.class);
Object returnValue = setScore.invoke(builder, theScore);
Run Code Online (Sandbox Code Playgroud)

在这种情况下显然returnValuenull.