簡體   English   中英

Java在運行時使用String [] stringArray參數實例化一個類

[英]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[]要么將其stringArrayObject然后讓JVM自動為您包裝在Object[]中:

constructor.newInstance(new Object[] { stringArray });

要么

constructor.newInstance((Object) stringArray);

暫無
暫無

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

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