簡體   English   中英

如何在不使用java.lang.reflect知道參數數量的情況下調用方法?

[英]How can I invoke a method without knowing the count of parameters using java.lang.reflect?

我閱讀了有關java.öang.reflect的教程,並找到了一種從類中獲取方法並使用給定參數調用它的方法,如下所示:

Method method = /*some initialization*/;
Object returnValue = method.invoke(null, "parameter-value1");

這將調用“ parameter-value1”作為唯一參數的靜態方法“ method”。

現在,它很整潔,但是不夠動態。 我想調用僅具有方法對象的方法,並插入未指定數量的參數。 假設我有Method methodObject[] parameters (將用作調用method參數)。

是否可以編寫一個簡短而簡單的方法以通過使用反射調用具有給定參數的任何方法? 如果是這樣:如何歸檔?

不行,這是不可能的。 可以使用給定的Object[]作為參數調用該方法。 但是對此有一些限制:

  • 參數數量必須與方法的參數數量匹配,因此無法使用任意數量的參數來調用它。 好吧,這是可能的,但是除了拋出異常之外,您什么也不會得到。
  • 參數的類型必須與方法的必需參數類型匹配。 與上面相同,無效的參數類型會導致異常。

幸運的是,這兩個都是已知的,這要歸功於Method#getParameterTypes()

Class<?>[] parameterTypes = someMethod.getParameterTypes();
int parameterCount = parameterTypes.length;

暫無
暫無

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

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