如何在java反射中调用没有参数的方法

时间:2018-02-07 08:28:02

标签: java methods reflection

我用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");
  }

}

1 个答案:

答案 0 :(得分:5)

  

如何在java反射中调用没有参数的方法?

如果它没有预料到,请不要给它一个论据。

  

Java是否支持此类功能?

Method m2 = c.getDeclaredMethod("method2");
m2.invoke(this);

c.getDeclaredMethod("method2").invoke(this);

BTW技术上this是第一个隐式参数。如果你没有参数,那么方法必须是static,就像这样调用。

static void staticMethod() { }

使用

调用
c.getDeclaredMethod("staticMethod").invoke(null);