我用java反射编写了以下代码。在此代码中,我调用 method1(),它有一个参数,并且代码运行时没有错误。没关系。但是如何调用没有参数的method2()和method3()呢?如何在java反射中调用不带参数的方法? Java支持这样的功能吗?
import java.lang.reflect.Method;
class MethodCallTest {
public static void main(String[] args) {
MethodCallTest mct = new MethodCallTest();
mct.start();
}
private void start(){
try{
Class<?> c = getClass();
Method m1 = c.getDeclaredMethod("method1", String.class);
m1.invoke(this, "method1");
}catch(Exception e){
e.printStackTrace();
}
}
private void method1(String s){
System.out.println("Hello from " + s);
}
private static void method2(){
System.out.println("Hello from method2");
}
private static void method3(){
System.out.println("Hello from method3");
}
}
最佳答案
How to call method without parameter in java reflection?
如果它不需要一个参数,就不要给它一个参数。
Does Java support such feature?
是的。
Method m2 = c.getDeclaredMethod("method2");
m2.invoke(this);
或
c.getDeclaredMethod("method2").invoke(this);
顺便说一句,从技术上讲,this
是第一个隐式参数。如果没有参数,该方法必须是static
,如下所示。
static void staticMethod() { }
使用调用
c.getDeclaredMethod("staticMethod").invoke(null);
关于java - 如何在java反射中调用不带参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659074/