2016-04-29 148 views
-1

假設有一個類名作爲字符串。從類名稱中將對象實例化爲字符串

String myClass = "com.whatever.MyClass"; 

如何使用反射,並有MyClass類型的對象,而不是Object,我實例化這個類不使用這樣的代碼:

MyClass myObj = MyClass.class.cast(instance); 

基本上我想的Object一個實例轉換爲MyClass不需要在代碼中使用MyClass,只需將類名稱作爲字符串即可。

+0

你不能。爲了將其分配給類型爲「MyClass」的引用,您需要知道「MyClass」在編譯時的情況。 –

+0

而唯一的方法就是這樣做http://stackoverflow.com/questions/2215843/using-reflection-in-java-to-create-a-new-instance-with-the-reference-variable-ty – Tunaki

+0

你可以查看工廠模式,將它們放入某種字符串索引的容器中並調用它們。這就是用C++完成的,但我不瞭解Java。 – 2016-04-29 14:09:57

回答

0

您可以創建一個類的實例,而不必使用反射來導入你的代碼的類運行它的方法:

Class clazz = Class.forName("com.whatever.MyClass"); 
Object instance = clazz.newInstance(); // or use the given instance 
clazz.getMethod("myMethod").invoke(instance); 
相關問題