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

Nye*_*han 2 java reflection methods

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

}
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 6

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

如果不期望的话,不要给它一个论据.

Java是否支持此类功能?

是.

Method m2 = c.getDeclaredMethod("method2");
m2.invoke(this);
Run Code Online (Sandbox Code Playgroud)

要么

c.getDeclaredMethod("method2").invoke(this);
Run Code Online (Sandbox Code Playgroud)

BTW技术上this是第一个隐含的论点.如果你没有参数,那么方法就必须static像这样被调用.

static void staticMethod() { }
Run Code Online (Sandbox Code Playgroud)

叫做使用

c.getDeclaredMethod("staticMethod").invoke(null);
Run Code Online (Sandbox Code Playgroud)