类型为的Java泛型列表类
我有一个解析字符串的方法调用,解析方法的第二个参数是它将返回的类型。要分析一个人,我们使用:类型为的Java泛型列表类,java,generics,Java,Generics,我有一个解析字符串的方法调用,解析方法的第二个参数是它将返回的类型。要分析一个人,我们使用: Person p=myParser.parse(“name=Mike”,Person.class) 这非常有效,对于列表也很有效: List lop=myParser.parse(somestring,List.class) 但是,这给了我一个编译器警告,因为我真正想要的是List.class,但我无法理解语法 如何做到这一点?您可以通过多种方法解决此问题,但最好是添加一个方法 List<Pers
Person p=myParser.parse(“name=Mike”,Person.class)代码>
这非常有效,对于列表也很有效:
List lop=myParser.parse(somestring,List.class)代码>
但是,这给了我一个编译器警告,因为我真正想要的是List.class
,但我无法理解语法
如何做到这一点?您可以通过多种方法解决此问题,但最好是添加一个方法
List<Person> lop = myParser.parseList(somestring, Person.class);
List lop=myParser.parseList(somestring,Person.class);
您的方法将能够“知道”列表中元素的类型
另一种方法是忽略警告,但这可能只是隐藏问题。由于的原因,您不能使用List.class
。在运行时,没有List.class
对象。只有一个列表。class
。(或每个类装入器最多一个。)
您可以做的是提供一个同级方法,允许调用方指定容器类型及其类型参数。例如:
List<Person> lop = myParser.parseList( somestring, Person.class );
List lop=myParser.parseList(somestring,Person.class);
或者,如果您想制作地图:
Map<Person,Integer> map = myParser.parseMap( somestring, Person.class, Integer.class );
Map Map=myParser.parseMap(somestring,Person.class,Integer.class);
谢谢,我想尝试用一种方法来做,但不想忽略警告。我认为,必须有一种方法来指定泛型类的类型。