我有一个解析字符串的方法调用,解析方法的第二个参数是它将返回的类型。为了解析一个人,我们使用:
Person p = myParser.parse("name=Mike", Person.class);
这很好用,也适用于列表:
List<Person> lop = myParser.parse(somestring, List.class);
但是,这给了我一个编译器警告,因为我真正想要的是 List<Person>.class
, 但我无法弄清楚语法。
我该怎么做?
最佳答案
您不能使用 List<Person>.class
因为 type erasure 强>。在运行时,没有 List<Person>.class
目的。只有一个 List.class
. (或者每个类加载器最多一个。)
您可以改为提供一个同级方法,允许调用者指定容器类型及其类型参数。例如:
List<Person> lop = myParser.parseList( somestring, Person.class );
或者,如果你想做一张 map :
Map<Person,Integer> map = myParser.parseMap( somestring, Person.class, Integer.class );
关于具有类型的 Java 泛型列表类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33270161/