带字符串classname的泛型列表

时间:2015-11-13 05:44:23

标签: java generics

如何在字符串中声明带有类名的列表。例如:我有一个带有类名的className变量。我需要使用className变量中的类型创建List。

String className ="com.foo.Foo";

是否可以使列表具有相同的

结果
List<Foo> fooList = new ArrayList<Foo>();

在不知道声明时的类型。

2 个答案:

答案 0 :(得分:2)

它并不完全清楚,但听起来你正在谈论制作一个列表,其通用类型参数是在运行时确定的,例如:它可能在一次运行期间为List<Foo>,在另一次运行期间为List<Bar>

你做不到;类型检查,包括泛型,在编译时完成。这与您在一次运行中的类型为String且在另一次运行期间Integer的变量不同的原因相同。

如果您希望能够在运行时选择不同的类型,则泛型类型参数必须是您可能选择的所有类型的超类型。例如,您可以拥有List<Object>,并在一次运行期间将Foo个实例放入其中,并在另一次运行期间放置Bar个实例。

答案 1 :(得分:0)

多部分问题“如何在字符串中声明具有类名的列表”:您不能以这种方式声明。对于“是否有可能具有与相同的结果的列表”:您可以创建类似“List fooList = new ArrayList();”的内容。但是你应该在访问fooList时注意类型转换。