我有这个班级
class X<T>{
public T dowhatever(){
//jackson parsing
ObjectMapper mapper = new ObjectMapper();
T obj = mapper.readValue(jsonString, T);
return obj;
}
}
但显然,我无法将T
传递给readValue方法。我需要一个class
信息。有没有办法在不将Class
对象作为参数传递的情况下对其进行概括?
P.S: 我省略了不必要的代码并留下了相关内容。
答案 0 :(得分:0)
概括它的唯一方法是通过一个具有特定类的子类作为泛型
class MyX extends X<Type> {
您可以在运行时获取Type
,因为这必须可供编译器检查。
答案 1 :(得分:0)
试试这个
class X<T> {
@SuppressWarnings("unchecked")
public void dowhatever(T... dummy){
Class<T> classT = (Class<T>)dummy.getClass().getComponentType();
System.out.println(classT);
}
}
class Person { }
和
X<Person> x = new X<>();
x.dowhatever(/* no arguments */); // -> class Person
或者你可以在构造函数中获取类对象。
class X<T> {
private final Class<T> classT;
@SuppressWarnings("unchecked")
public X(T... dummy) {
classT = (Class<T>)dummy.getClass().getComponentType();
}
}