如何在字符串中声明带有类名的列表。例如:我有一个带有类名的className变量。我需要使用className变量中的类型创建List。
String className ="com.foo.Foo";
是否可以使列表具有相同的
结果List<Foo> fooList = new ArrayList<Foo>();
在不知道声明时的类型。
答案 0 :(得分:2)
它并不完全清楚,但听起来你正在谈论制作一个列表,其通用类型参数是在运行时确定的,例如:它可能在一次运行期间为List<Foo>
,在另一次运行期间为List<Bar>
。
你做不到;类型检查,包括泛型,在编译时完成。这与您在一次运行中的类型为String
且在另一次运行期间Integer
的变量不同的原因相同。
如果您希望能够在运行时选择不同的类型,则泛型类型参数必须是您可能选择的所有类型的超类型。例如,您可以拥有List<Object>
,并在一次运行期间将Foo
个实例放入其中,并在另一次运行期间放置Bar
个实例。
答案 1 :(得分:0)
多部分问题“如何在字符串中声明具有类名的列表”:您不能以这种方式声明。对于“是否有可能具有与相同的结果的列表”:您可以创建类似“List fooList = new ArrayList();”的内容。但是你应该在访问fooList时注意类型转换。