泛型类</t>的类<t>的名称

时间:2011-12-18 15:08:11

标签: java generics

在使用泛型时,我在java中遇到了一个小问题。我有一个A类:

public class A<T>

在A的方法中,我需要获取T的类型名称。有没有办法用T找到字符串?

(如果我创建A<String> temp = new A<String>();,我希望能够在某一点获得java.lang.String - 我必须使用泛型,因为我的一个方法必须返回一个List。)

这似乎很容易,但我不知道该怎么做。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

由于type erasure,这是不可能的。

相反,您需要在构造函数中接受Type<T>

答案 1 :(得分:2)

这是不可能的,因为泛型是使用“擦除”实现的:实际上内部只有一个A类,而<String>在运行时被“擦除”。根据我的经验,最好的解决方案是添加一个私有的最终字段Class<T> tClass,并要求在构造函数中指定它:

public A(final Class<T> tClass)
{
    this.tClass = tClass;
}

然后你必须写

A<String> temp = new A<String>(String.class);

而不仅仅是

A<String> temp = new A<String>();