我想获取类模板的类型名称(例如设置)。例如,当我使用:获取类模板的类型名称
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
如何使用类似p.getTypeName()
即使p是空的,我知道P(这是Personne)的类型名称。
我想获取类模板的类型名称(例如设置)。例如,当我使用:获取类模板的类型名称
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
如何使用类似p.getTypeName()
即使p是空的,我知道P(这是Personne)的类型名称。
在运行时,您不能。这是由于type erasure。
由于Java的类型擦除,您无法在运行时访问参数化类型。但是,如果你知道它是什么类型的可能是,只是想检查它是否是其中的一个:像在C
if (someObject instanceof SomeType) {
...
} else if (someObject instanceof SomeOtherType) {
...
} ...
然而,即使你知道它可能是什么类型,假设你有一些某些类型的对象,我猜你不能测试类型是SomeType还是SomeOtherType,当它是空的时,对吧? – shn 2012-01-31 14:35:05
@ user995434如果你有一个空集,为什么它传递了什么参数? – 2012-01-31 14:36:35
假设您在本地有一组Some类型的对象,另一组为SomeOtherType类型的对象。假设我保留了一组类型为T的对象,如果这个集合是空的并且T是SomeType,我想清空(清除)集合A.如果每个对象中没有指示符告诉你它是SomeType或SomeOtherType类型? @ChrisCashwell – shn 2012-01-31 14:53:10
Java有仿制药,但没有模板++。所以'HashSet'不是“类模板”。 Java中的泛型与C++中的模板不一样。 – Jesper 2012-01-31 14:08:35