Java 泛型 - 获取类?

2022-08-31 10:31:49

我得到了一个列表,编程如下:.有没有办法使用T变量来获取类的名称(这样我就可以从内部知道T是否是字符串,套接字等)?public class MyList<T>MyList

编辑:别介意,在这里找到了答案。


答案 1

简短的回答:你不能。

长答案

由于泛型在 Java 中实现的方式,泛型类型 T 不会保留在运行时。不过,您可以使用私有数据成员:

public class Foo<T> 
{
    private Class<T> type;

    public Foo(Class<T> type) { this.type = type; } 
}

用法示例:

Foo<Integer> test = new Foo<Integer>(Integer.class);

答案 2

我喜欢的解决方案

http://www.nautsch.net/2008/10/28/class-von-type-parameter-java-generics/

public class Dada<T> {

    private Class<T> typeOfT;

    @SuppressWarnings("unchecked")
    public Dada() {
        this.typeOfT = (Class<T>)
                ((ParameterizedType)getClass()
                .getGenericSuperclass())
                .getActualTypeArguments()[0];
    }
...

推荐