用变量实例化

时间:2018-06-07 08:24:33

标签: java oop reflection

我对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运算符是否可行?

1 个答案:

答案 0 :(得分:7)

简短的回答是否定的。 new运算符基于现有类创建对象实例。使用字符串创建类实例会暴露许多编译和运行时问题。如果你想处理这种情况,你应该看看Factory pattern(及相关模式)。

也许玩反射可以为你提供一些东西,但我绝不会考虑这种方法。