簡體   English   中英

如何在java反射中調用不帶參數的方法

[英]How to call method without parameter in java 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");
  }

}

如何在java反射中調用不帶參數的方法?

如果不期望,則不要給它一個參數。

Java是否支持這種功能?

是。

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

要么

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

順便說一句,從技術上講, this是第一個隱式參數。 如果沒有參數,則該方法必須是static ,這樣被稱為。

static void staticMethod() { }

稱為使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM