0
我有一個類可能需要1到4個參數。他們總是字符串。我想根據傳遞給函數的參數數量來創建這個類的一個對象。有沒有什麼辦法可以創建構造函數並將對象數組直接傳遞給newInstance?在Scala反射中創建帶參數構造函數的類
NewInstanceWithReflection clazz = (NewInstanceWithReflection)Class.forName("NewInstanceWithReflection").newInstance();
Constructor constructor = NewInstanceWithReflection.class.getDeclaredConstructor(new Class[] {String.class});
NewInstanceWithReflection object1 = (NewInstanceWithReflection)clazz.newInstance(new Object[]{"StackOverFlow"});
此代碼粘貼到sbt解釋器似乎並不工作。任何幫助讚賞。
對不起,我搞砸了我的代碼示例。我只想知道是否可以跳過'.getDeclaredConstructor(classOf [String])',因爲String args的數量可能會從1到4變化,只是將動態數量的args傳遞給'newInstance'方法。 – NNamed
不,這是不可能的......'newInstance'是'Constructor'對象上的一個方法。你需要擁有這個對象才能調用它的一個方法。所以,「跳過」獲取對象實例是行不通的。 – Dima