2015-01-09 120 views
0

Java中可能使用參數化構造函數獲取類的集合並在運行時實例化它們中的每一個類?這些類只有一個構造函數,它可以接受任意數量的基元類型參數,儘管它們所採用的參數個數對於每個類都可能有所不同。作爲一個例子,這裏是我們要在運行時實例化四類:使用參數化構造函數實例化一組給定的類

public class One { public One(int a) { } } 
public class Two { public Two(char a, int b) { } } 
public class Three { public Three(float a, char b, int c) { } } 
public class Four { public Four(float a, char b, int c) { } } 
+0

與反思,就可以找到構造函數(因爲只有一個),但是'a','b','c'等值會來自哪裏fr OM? – 2015-01-09 21:27:30

+0

@RC我不確定。即使在我們使用Constructor.newInstance()的時候,我們仍然需要在編譯期間知道參數的數量和順序。 – user928112 2015-01-09 21:30:53

回答

2
Class oneC = Class.forName("One"); // use FQCN 
Contructor constructor = oncC.getConstructors()[0]; // assuming that the class has only 1 constructor 
Class<?>[] paramTypes = constructor.getParameterTypes(); 
// Iterate paramTypes, create each parameter value and then call constructor.newInstance(...) 

參考:

相關問題