具有类型的 Java 泛型列表类

标签 java generics

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

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/

相关文章:

java - ResultSet(JDBC)如何按列名返回值

java - 解析并删除java正则表达式中的特殊字符

java - JOptionPane 输入对话框和按钮

java - Java中如何调用泛型类型的方法?

java - 如果默认接受子类对象,为什么要在泛型中使用有界类型参数?

typescript - 使用 TypeScript,我可以键入 getProperty<T, K extends keyof T> 的柯里化(Currying)版本吗

java - 无法理解 String.replaceAll 非贪婪行为

java - Vert.x 检查请求 header 是否包含 X-Requested-With,如果不包含则拒绝

java - 功能或错误 :Why does this Java code compile?

Java 泛型 : how to declare a generic parameter as the base type of another generic parameter?