传递类型参数的类,该类型参数本身可以在Java中参数化

传递类型参数的类,该类型参数本身可以在Java中参数化,java,class,generics,types,Java,Class,Generics,Types,我有以下类,该类在其构造函数中传递其类型的类: class Foo<T>{ Foo(Class<T> clazz){ //do something } } 老实说,没有真正的方法来做你想做的事情,因为在运行时VM无法访问避免类型擦除所需的信息-这会阻止你的类拥有返回相应类的信息,因此,它最多只能返回与您提供的相同的类参数。在Foo中作为参数传递的类是什么?您正在寻找JacksonTypeReference或GuavaTypeToken@J

我有以下类,该类在其构造函数中传递其类型的类:

class Foo<T>{
    Foo(Class<T> clazz){
        //do something
    }
}

老实说,没有真正的方法来做你想做的事情,因为在运行时VM无法访问避免类型擦除所需的信息-这会阻止你的类拥有返回相应类的信息,因此,它最多只能返回与您提供的相同的类参数。

在Foo中作为参数传递的类是什么?您正在寻找Jackson
TypeReference
或Guava
TypeToken
@JBNizet我必须在我的项目中使用大量反射(视频游戏模型)所以我创建了一个方便的类来封装对私有或最终字段的访问。类型T是引用字段的类型。该类用于在构造函数中检查字段的类型是否正确。我在帖子中添加了更详细的代码。
Foo<List> f = new Foo(List.class);
Foo<List<Integer>> f1 = new Foo(List.class);
class StaticField<V> {
    private final Field field;
    StaticField(Class<?> declaringClass, String fieldName, Class<V> valueClass){
        //instantiate field and do some error handling including an
        //assertion whether field.getType() == valueClass
    }
    public V get(){...}
    public void set(V value){...}
}