静态方法中的泛型

Mic*_*ael 1 java generics static-methods

我需要在实用程序类中添加一个方法,其中包含一些静态方法,这些方法从JSON字符串中解析事物并返回一组数据.

问题是这些东西有各种各样的子类型,所以我创建了这个方法:

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

调用者如何告诉这个方法是什么E?或者有更好的方法吗?

Pet*_*rey 6

你需要通过它.

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

泛型主要是编译时功能.这意味着它在运行时不可用(有一些例外)

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