[英]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.