我想將類類型作爲參數傳遞給java.all中具有相同構造函數參數的方法,並在該方法中創建該類的實例.is這可能嗎?傳遞類類型作爲參數並創建它的實例
12
A
回答
14
使用反射創建實例:
Object obj = clazz.newInstance();
這將使用默認no-arg構造函數來創建實例。
Constructor<?> constructor = clazz.getConstructor(String.class);
Object object = constructor.newInstance(new Object[] { strArgument });
要創建實例,如果您有一些其他構造函數需要參數。
3
你需要使用反射來做到這一點,但是它是肯定可能的。
void MyMethod(Class className)
{
try {
Object obj = className.newInstance();
//obj is a newly created object of the passed in type
}
catch (Exception ex) { }
}
2
您正在尋找反射。
你的方法會是這個樣子:
public void m1(Class c) {
try {
Object obj = c.newInstance();
//do something with your new instance
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
}
的反射API Oracle的文檔是here
1
是的,你可以
void x(Class cls) throws InstantiationException, IllegalAccessException {
cls.newInstance();
}
注意Class.newInstance可能會失敗,
IllegalAccessException - 如果該類或其null構造方法是不可訪問。 InstantiationException - 如果此類表示抽象類,接口,數組類,基本類型或void;如果此Class表示抽象類,接口,數組類,或者如果班級沒有空的構造函數;或者由於其他原因實例化失敗。
查看API瞭解更多
相關問題
- 1. Java:創建作爲函數參數傳遞的泛型類型的實例
- 2. Scala傳遞類類型作爲參數
- 3. 將參考類型作爲參數傳遞並使用泛型
- 4. 如何將抽象類作爲參數傳遞給類型的實例?
- 5. 在函數中將類/實例函數作爲參數傳遞
- 6. 傳遞類作爲參數
- 7. 將一個類的實例作爲參數傳遞給C#
- 8. 限制傳遞派生類的實例作爲方法參數
- 9. 如何傳遞類型(例如String)作爲函數參數?
- 10. 在作爲參數傳入的類型中實例化對象
- 11. 使用擴展參數的類型傳遞作爲泛型類型參數
- 12. 作爲類型類實例的函數?
- 13. 如何創建類的實例並在子類中實現它?
- 14. 如何創建並訪問在C#中作爲參數傳遞的匿名類的新實例?
- 15. 在MVC中創建未知類型的實例並使用它
- 16. 將類的當前實例傳遞給新創建的類
- 17. 演員對象類是誰的類型作爲參數傳遞
- 18. 創建新的泛型類型實例轉換爲根類型?
- 19. 傳類類型作爲參數
- 20. 創建新類實例和應用參數作爲陣列
- 21. .NET泛型類實例 - 傳遞變量數據類型
- 22. 提交類的實例作爲參數
- 23. 傳遞了兩個泛型類型作爲函數參數
- 24. 在C#中傳遞泛型作爲泛型類型參數
- 25. 將模板類作爲參數傳遞給類方法並使用模板類作爲矢量模板類型
- 26. 如何爲遞歸類型創建一個Storable實例?
- 27. 如何使用swig將python類實例作爲C++函數的參數傳遞?
- 28. 傳遞cython參數作爲參考與未知類型
- 29. 傳遞一個類型的函數作爲參數在DART
- 30. 作爲參數傳遞類型的SQL Server函數
您確定您確實「想要」這樣做嗎?我不會「想」這樣做 - 永遠。 – Dariusz 2013-04-11 06:23:21
你的用例是什麼引人注目? – Santosh 2013-04-11 06:24:37
有一些有效的用例,例如從基於工廠/構造函數的注入實例化類。除非你正在編寫這樣的框架,否則你還可以使用DI來通過構造函數注入來實例化類。 – 2013-04-11 06:29:40