2016-07-15 62 views
-1

我試圖調用一個方法對象,一個未知的類,參數會在一個字符串數組,我怎麼能調用一個方法對象時傳遞以此爲論據?方法調用數組參數

例如

method.invoke(obj, arg1, arg2,...); 

我有

String[] args = {"arg1", "arg2"...} 

字符串數組將每次根據用戶的輸入是不同的,從而導致不同的參數。

+1

有什麼方法的定義是什麼? –

+0

真實程序中變量的字符串數組名稱的內容是什麼?你不能那樣做。 –

+0

根據用戶輸入,它有一個不同的方法,我有5個用「執行」方法設置的類,根據用戶輸入,它會創建相應的類。這些方法都有不同的參數類型,我在字符串數組中有這個問題。 @LouisWasserman否....它是我試圖傳入的參數。 – gptt916

回答

1

如果該對象的方法只有字符串或任何兼容類型爲字符串的參數可以傳遞ARGS爲一體。 變化 字串[] args = { 「ARG1」, 「ARG2」 ...};對象[] ARGS = { 「ARG1」, 「ARG2」 ...}; 這樣的: method.invoke(OBJ,參數);

確保當你的方法對象:class.getMethod(「法」,類型); 類型arg必須匹配您將傳遞的數量和參數的類型。 例如: 類[]類型= {String.class,String.class,String.class};對象[] ARGS = { 「ARG1」, 「ARG2」, 「ARG3」}匹配; 但不與 對象[] ARGS = { 「ARG1」,「ARG2};

動態調用

假設僅接受字符串的方法中(否則需要更復雜的映射) psedo代碼:

方法:

otbtain方法名

前充足:打印//存儲在變量方法名

參數數量:

獲取列表或陣列的用戶輸入

例如:ARGS = { 「BLA」, 「血乳酸」 ...}

類型:

有類型的數組列表。

每個精氨酸,不要arraylist.add(String.class)//或任何其他類如果不是字符串

類[]類型= {};

類型= arraylist.toArray(類型);

現在你擁有你所需要撥打:

someClass.getMethod(方法名,類型)。調用(instanceofSomeClass,參數); //這個

工作什麼都參數的用戶輸入

+0

我認爲你正試圖實現運行時解釋器,如果是的話爲什麼不使用Nashorn,groovy或jython?這些將讓你即時執行代碼。 無論如何,我檢查了我對路易的迴應後,得到了你想要達到的結果 –