我正在尝试做一个终端程序,它将根据用户的输入初始化一个类。有没有一种方法可以使用String变量初始化一个特定的类,而不会用if
语句使程序变得混乱?这里有一个我想做的例子:
终端:
Which program would you like to run? Please type in lower case.
- Room designer
- Etc.
>
代码:
String answer = input.nextLine();
[answer] programToRun = new [answer]();
有没有办法做到这一点?我知道在Python中有一种使用Globals
字典的方法,所以我相信有一种方法,只是我还没有找到它。
3条答案
按热度按时间ddrv8njm1#
实现这一点的方法是使用工厂模式
如果你对此有任何疑问请告诉我
--编辑--
范例:
kb5ga3dv2#
你可以使用下面的代码从一个字符串创建一个类的示例,使用它的无参数构造函数(如果不存在这样的构造函数,则会崩溃):
遵循某种约定,例如实现一个公共接口,您可以调用一个入口点方法来动态运行任意行为。
编辑:尽管这在技术上没有问题,但ControlAltDels使用工厂模式的想法是解决这个问题的更好方法,特别是因为它将用户输入与实际类名分离。
g9icjywg3#
if
语句把我的程序搞得一团糟?..."*您可以使用 reflection framework 通过 String 值示例化一个类。
您需要提供完全限定名。