静态方法中的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){...}
这与你的想法相似