java如何获取当前类的泛型类型

   2024-09-30 3640
核心提示:在Java中,由于类型擦除,我们无法直接获取当前类的泛型类型。但是,我们可以通过子类或者接口实现的方式来获取泛型类型。这里有

在Java中,由于类型擦除,我们无法直接获取当前类的泛型类型。但是,我们可以通过子类或者接口实现的方式来获取泛型类型。这里有一个例子:

public abstract class TypeReference<T> {    private final Type type;    protected TypeReference() {        Type superClass = getClass().getGenericSuperclass();        if (superClass instanceof Class) {            throw new IllegalArgumentException("Internal error: TypeReference constructed without actual type information");        } else {            this.type = ((ParameterizedType) superClass).getActualTypeArguments()[0];        }    }    public Type getType() {        return this.type;    }}

使用这个TypeReference类,你可以获取泛型类型。例如:

public class MyClass<T> {    private TypeReference<T> typeReference = new TypeReference<T>() {};    public Type getGenericType() {        return typeReference.getType();    }}

在这个例子中,我们创建了一个名为MyClass的泛型类,并在其中定义了一个TypeReference对象。通过创建一个匿名子类并实例化TypeReference,我们可以获取泛型类型。然后,我们可以通过调用getGenericType()方法来获取泛型类型。

请注意,这种方法仅适用于子类或接口实现。在其他情况下,由于类型擦除,我们无法直接获取泛型类型。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号