小编典典

静态方法中的泛型

java

我需要在实用工具类中添加带有静态方法的方法,该方法可以解析JSON字符串中的内容并返回内容数组。

问题是这些东西有各种子类型,因此我创建了此方法:

public static <E extends Thing> E[] parseThingsFromJSON(String body) {
    return parser.fromJson(body, E[].class);
}

呼叫者如何告诉该方法是什么E?还是有更好的方法来做到这一点?


阅读 269

收藏
2020-11-26

共1个答案

小编典典

您需要通过它。

public static <E extends Thing> E[] parseThingsFromJSON(String body, Class<E[]> eClass) {
    return parser.fromJson(body, eClass);
}

泛型在很大程度上是编译时的功能。这意味着它在运行时不可用(某些例外)

在这种情况下,要使泛型类型在运行时可用,必须将其作为附加参数传递。

2020-11-26