我需要在一个工具类添加一个方法与从JSON字符串解析的东西,并返回一个事物的阵列一些静态方法。
问题是,有这些东西各种亚型,所以我创造了这个方法:
public static <E extends Thing> E[] parseThingsFromJSON(String body) {
return parser.fromJson(body, E[].class);
}
如何调用者告诉这种方法是什么E
是什么? 还是有更好的方式来做到这一点?
我需要在一个工具类添加一个方法与从JSON字符串解析的东西,并返回一个事物的阵列一些静态方法。
问题是,有这些东西各种亚型,所以我创造了这个方法:
public static <E extends Thing> E[] parseThingsFromJSON(String body) {
return parser.fromJson(body, E[].class);
}
如何调用者告诉这种方法是什么E
是什么? 还是有更好的方式来做到这一点?
你需要将它传递。
public static <E extends Thing> E[] parseThingsFromJSON(String body, Class<E[]> eClass) {
return parser.fromJson(body, eClass);
}
泛型在很大程度上是一种编译时的功能。 这意味着它不是在运行时可用(有一些例外)
在这种情况下,做出是否已在运行时的泛型类型,你必须把它作为一个额外的参数。
从内存中,这是一个类似的问题,你使用Arrays.asList时有什么()
有了这个,你做
Arrays.<MyOjbect>(new MyObject(), new MyObject());
或在您的特定情况下你传递一个数组如
Arrays.<Integer[]>asList(new Integer[]{new Integer(1)});
此方法在JDK中的签名是
public static <T> List<T> asList(T... a){...}
这类似于你的,我认为