我对Java实例化有所了解。我们举一个例子, 我想根据这样的条件实例化一个类:
Animal a = null;
if (string.equals("Dog")) a = new Dog();
else if (string.equals("Cat") a = new Cat();
etc...
我知道它有效,但我想做这样的事情:
而不是a = new Dog();
我想做类似的事情:a = new string();
(string
== "Dog"
)
基本上在运行时,字符串被" Dog"替换。我知道可以使用API Reflection(使用Class.forName(string)
)。
但new
运算符是否可行?
答案 0 :(得分:7)
简短的回答是否定的。 new
运算符基于现有类创建对象实例。使用字符串创建类实例会暴露许多编译和运行时问题。如果你想处理这种情况,你应该看看Factory pattern(及相关模式)。
也许玩反射可以为你提供一些东西,但我绝不会考虑这种方法。