2010-07-08 62 views
1

如何获取泛型类型参数的软件包名称(通常是类)?我有一个类似的类:获取通用类型参数的软件包名称

public class MyClass<T> {} 

我希望做的是这样的(非工作伪的Java):

return T.class.getPackage().getName(); 

我需要这个,因为JAXB需要这个作为上下文路径(JAXBContext.newInstance(String)方法)。当然,我愿意以更优雅的方式与JAXBContext合作。 :)

干杯 马蒂亚斯

回答

4

这是一个可能的解决方案(如果你可以改变MyClass的):

public class MyClass<T> { 

    private Class<T> clazz; 
    public MyClass (Class<T> clazz) { 
    this.clazz = clazz; 
    } 

    public String getPackageNameOfGenericClass() { 
    return clazz.getPackage().getName(); 
    } 

} 
+0

谢谢!看起来不错,虽然它有点多余。但似乎是不可避免的... – 2010-07-08 11:16:32