[英]Java- Declare an object of a type chosen by the user
我不知道这是否可行,但我想知道的是以下几点:
假设我有一个包含2个不同类类型的数组:
Fruit[] fruit;
fruit[0]= new Banana();
fruit[1]= new Apple();
我想做的是这样的:
Fruit unknown= new fruit[0].getClass();
我想声明一个由用户选择类型的对象。 我可以做吗?
我想用户会说他们想要一个“ Apple”或“ Banana”,即您将以字符串形式输入。 在这种情况下,这可能就是您所需要的。
Fruit f = (Fruit) Class.forName("Banana").newInstance();
fruit[0] = f;
与其使用反思,不如考虑结合使用工厂和策略设计模式。 让输入处理代码检查输入以查看他们想要什么东西,然后选择一个Factory / Strategy对象。 然后,稍后,当您需要创建对象时,要求Factory / Strategy对象创建它。
这不是很难-您已经完成了大部分工作。 在Class
接口上有一个名为newInstance()
的方法,您可以像这样使用:
Fruit userFruit = (Fruit) Class.forName(input).newInstance();
(其中input
是一个包含表示用户选择的类名的String),以返回您拥有的类型的新实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.