繁体   English   中英

Java-声明用户选择的类型的对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM