用变量实例化

Ant*_*arf 0 java oop reflection

我想知道Java实例化的一些事情.让我们举一个例子,我想根据这样的条件实例化一个类:

Animal a = null;
if (string.equals("Dog")) a = new Dog();
else if (string.equals("Cat") a = new Cat();
etc...
Run Code Online (Sandbox Code Playgroud)

我知道它有效,但我想做这样的事情:而不是做a = new Dog();
我想做这样的事情:( a = new string();string== "Dog")

基本上在运行时,字符串被"Dog"替换.我知道可以使用API​​ Reflection(with Class.forName(string)).

但是new运营商有可能吗?

Lor*_*ore 7

最简洁的答案是不.在new操作创建一个基于现有的类的对象实例.使用字符串创建类实例会暴露许多编译和运行时问题.如果你想处理这种情况,你应该看看工厂模式(和相关的模式).

也许玩反射会给你一些事情,但我永远不会考虑这种方法.