繁体   English   中英

带类型的Java通用列表类

[英]Java Generic List Class with Type

我有一个解析字符串的方法调用,而parse方法的第二个参数是它将返回的类型。 要解析一个人,我们使用:

Person p = myParser.parse("name=Mike", Person.class);

这很好用,这也适用于列表:

List<Person> lop = myParser.parse(somestring, List.class);

但是,这给了我一个编译器警告,因为我真正想要的是List<Person>.class ,但我无法弄清楚语法。

我怎么做?

由于类型擦除,您不能使用List<Person>.class 在运行时,没有List<Person>.class对象。 只有一个List.class (或者每个类加载器最多一个。)

你可以做的是提供一个兄弟方法,允许调用者指定容器类型和它的类型参数。 例如:

List<Person> lop = myParser.parseList( somestring, Person.class );

或者,如果你想做一张地图:

Map<Person,Integer> map = myParser.parseMap( somestring, Person.class, Integer.class );

您可以通过多种方式破解此方法,但最好的方法是添加方法

List<Person> lop = myParser.parseList(somestring, Person.class);

您的方法将能够“知道”列表元素的类型。

另一种可以做到这一点的方法是忽略警告,但这可能只是隐藏了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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