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

时间:2016-03-27 17:05:07

标签: java reflection polymorphism

我不知道这是否可能,但我想知道的是:

假设我有一个包含2种不同类类型的数组:

Fruit[] fruit;
fruit[0]= new Banana();
fruit[1]= new Apple();

我想做的是:

Fruit unknown= new fruit[0].getClass();

我想声明一个由用户选择的类型的对象。我可以这样做吗?

3 个答案:

答案 0 :(得分:4)

我认为用户会说他们想要一个" Apple"或者香蕉"即你将以字符串形式输入。在这种情况下,这可能就是您所需要的。

Fruit f = (Fruit) Class.forName("Banana").newInstance();
   fruit[0] = f;

答案 1 :(得分:1)

不要使用反射,而应考虑使用Factory和Strategy设计模式的组合。让输入处理代码检查输入以查看他们想要什么样的东西,从而选择Factory / Strategy对象。然后,稍后,当您需要创建的对象时,请求Factory / Strategy对象创建它。

答案 2 :(得分:0)

这不是很难 - 你大部分都在那里。 newInstance()接口上有一个名为Class的方法,您可以像这样使用:

Fruit userFruit = (Fruit) Class.forName(input).newInstance();

(其中input是一个包含表示用户选择的类名的String),以返回您所拥有类型的新实例。