Java 使用泛型类型作为类参数
我有这门课Java 使用泛型类型作为类参数,java,json,generics,jackson,Java,Json,Generics,Jackson,我有这门课 class X<T>{ public T dowhatever(){ //jackson parsing ObjectMapper mapper = new ObjectMapper(); T obj = mapper.readValue(jsonString, T); return obj; } } X类{ 公共部门{ //杰克逊解析 ObjectMapper mapper=新的O
class X<T>{
public T dowhatever(){
//jackson parsing
ObjectMapper mapper = new ObjectMapper();
T obj = mapper.readValue(jsonString, T);
return obj;
}
}
X类{
公共部门{
//杰克逊解析
ObjectMapper mapper=新的ObjectMapper();
T obj=mapper.readValue(jsonString,T);
返回obj;
}
}
但是显然,我不能将t
传递给readValue方法。我需要一个类
信息。有没有一种方法可以在不将类
对象作为参数传递的情况下对其进行泛化
p、 s:
我省略了不必要的代码,留下了相关的代码 泛化它的唯一方法是通过一个子类将特定类作为泛型
class MyX extends X<Type> {
类MyX扩展了X{
您可以在运行时获得类型,因为这必须可供编译器检查。试试这个
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类{
@抑制警告(“未选中”)
公共无效dowhatever(T…dummy){
类classT=(类)dummy.getClass().getComponentType();
系统输出打印LN(类别T);
}
}
类人{}
及
X=newx();
x、 dowhatever(/*无参数*/);/->class Person
或者您可以在构造函数中获取类对象
class X<T> {
private final Class<T> classT;
@SuppressWarnings("unchecked")
public X(T... dummy) {
classT = (Class<T>)dummy.getClass().getComponentType();
}
}
X类{
私人期末班;
@抑制警告(“未选中”)
公共X(T…虚拟){
classT=(类)dummy.getClass().getComponentType();
}
}
如果没有类literal.C.f.这基本上是不可能的,或者至少是非常困难的
class X<T> {
private final Class<T> classT;
@SuppressWarnings("unchecked")
public X(T... dummy) {
classT = (Class<T>)dummy.getClass().getComponentType();
}
}