java - 如何在java反射中调用不带参数的方法

标签 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");
  }

}

最佳答案

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/

相关文章:

java - 如何在IIOMetadata中嵌入ICC_Profile(Adobe98)并使用ImageIO写入PNG?

java - 使用方法在摄氏度和华氏度之间转换

visual-studio - Visual Studio "Go to implementation "

Java,scan double只接受int

java - 我是否需要将 serialVersionUID 放在可序列化类的祖先上?

java - java中的回文,要求用户输入不同的输入,直到他们输入stop,该方法应该删除所有空格并使字母小写

java - 使用 NMS 和反射的 ClassCastException

c# - 序列化时出现 InvalidOperationException

java - 如何在 Java 代码中使用 Scala 注解

java - 如何使用Printf