[英]Java Instantiate a class at run time with String[] stringArray parameters
我在獲取運行時類的具體實現時遇到了麻煩。 我得到的類名className
在運行時,我想這需要一個字符串數組構造函數初始化。 我有以下
stringArray = new String[]{"abc", "def"};
Class clazz = Class.forName(className);
Constructor<MyCustomInterface> constructor = null;
MyCustomInterface myCustomObject = null;
constructor = clazz.getDeclaredConstructor(String[].class); // Gives constructor which takes in String[] I assume
myCustomObject = constructor.newInstance(stringArray); // I am providing the same here
在我的自定義界面實現中,我有
public class MyClass implements MyCustomInterface{
public MyClass(String args[]) throws Exception{
//My custom constructor
}
}
但是我仍然收到一個異常的說法, wrong number of arguments
,即使我傳遞的是字符串數組。 我對如何進行感到困惑。 任何幫助表示贊賞。
Java中的數組類型是協變的。 這意味着Object[] objectArray = stringArray;
是一個完全有效的聲明。
當你調用constructor.newInstance
,你的stringArray
被強制轉換為Object[]
和你想有兩個,分別調用構造函數String
參數。
您要么需要將stringArray
顯式地包裝在Object[]
要么將其stringArray
為Object
然后讓JVM自動為您包裝在Object[]
中:
constructor.newInstance(new Object[] { stringArray });
要么
constructor.newInstance((Object) stringArray);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.