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