静态方法中的generics

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

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

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

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

你需要通过它。

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

generics主要是编译时function。 这意味着它在运行时不可用(有一些例外)

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

从内存中,这与使用Arrays.asList()时的问题类似

有了这个,你做到了

 Arrays.(new MyObject(), new MyObject()); 

或者在您传递数组的特定情况下,例如

 Arrays.asList(new Integer[]{new Integer(1)}); 

JDK中此方法的签名是

 public static  List asList(T... a){...} 

这与你的想法相似