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

如何使用反射在java中调用void方法,java,reflection,Java,Reflection,如果我使用反射调用一个方法,唯一能让它正常工作而不引发空指针异常的方法是在我调用的方法中返回一个int值 例如,我要调用的方法: public int setScore(int n) { this.score = n; return 1; } 我这样称呼它: Method setScore = myClass.getMethod("setScore", new Class<?>[]{int.class}); Object returnValue = setScore.invoke(

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

例如,我要调用的方法:

public int setScore(int n)
{
this.score = n;
return 1;
}
我这样称呼它:

Method setScore = myClass.getMethod("setScore", new Class<?>[]{int.class});
Object returnValue = setScore.invoke(builder, new Object[]{theScore});
methodsetscore=myClass.getMethod(“setScore”,新类[]{int.Class});
objectreturnvalue=setScore.invoke(生成器,新对象[]{theScore});
将返回类型更改为void并调用它似乎总是引发空指针异常。我是否需要改变我对待虚空方法的方式


谢谢

您能告诉我们引发
NullPointerException
的位置吗?此代码正常工作:

public void setScore(int n)
{
    this.score = n;
}
请注意,我使用varargs稍微简化了您的代码:

Method setScore = builder.getClass().getMethod("setScore", int.class);
Object returnValue = setScore.invoke(builder, theScore);

显然,在这种情况下,
returnValue
null
如果您的方法不再返回任何内容,请不要指定调用它的结果:

setScore.invoke(builder, new Object[]{theScore});

但是,单凭这一点是不行的:我能看到您获得
NullPointerException
的唯一原因是,如果您稍后尝试使用分配结果的变量(
returnValue
),由于如果方法的返回类型为
void
,则返回
null

,我认为您不应该存储返回值…?如果有帮助,请查看此链接