【发布时间】:2016-05-20 02:07:55
【问题描述】:
我不知道我的标题是否正确,但是,我正在寻找一种方法来根据用户输入实例化子类的新对象。 IE,我想问用户他们想创建什么子类,然后根据那个选择创建它。所以它可能看起来像
String category = CATEGORIES[Integer.parseInt(scanner.nextLine())];
items.add(new category(myString, myInt));
我将这些添加到 ArrayList 中。
那个 new 关键字似乎只接受一个实际的类,而不接受其他任何东西。我玩过内置的类方法,但是当我尝试在新调用之后放置这些方法时,它失败了。除了类本身失败之外,我在新调用之后放置的几乎所有东西都失败了。
这是可能的吗?
谢谢!
【问题讨论】:
-
你在寻找反射。
-
你可以instantiate the class using reflection。或者你可以使用 switch 语句。
-
询问用户你必须实例化哪个类并不安全!
-
查看工厂设计模式。它应该为您提供您正在寻找的东西。 link
-
只需要一个开关。我知道我可以使用我只是在寻找一种“更清洁”的方式,但反射的东西看起来更复杂。谢谢大家!