繁体   English   中英

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

[英]How to call a void method in java using 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(builder, new Object[]{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);

显然在这种情况下returnValuenull

如果您的方法不再返回任何内容,请不要分配调用它的结果:

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

但这并不是唯一的原因:我可以看到你获得NullPointerException的唯一原因是你曾经尝试过使用你将结果分配给( returnValue )的变量,因为如果方法的返回, invoke返回null类型void

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM