2010-07-08 6 views
1

Comment puis-je obtenir le nom du package (en général, la classe) d'un argument de type générique? J'ai une classe semblable à ceci:Obtenir le nom du package de l'argument de type générique

public class MyClass<T> {} 

Ce que je voudrais faire est quelque chose comme ceci (pseudo-Java non-travail):

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

J'ai besoin, puisque JAXB a besoin de ce comme chemin de contexte (méthode JAXBContext.newInstance(String)). Bien sûr, je suis ouvert à des façons plus élégantes de travailler avec JAXBContext. :)

Vive Matthias

Répondre

4

Ceci est une solution possible (si vous pouvez changer 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

Merci! Ça a l'air sympa, même si c'est un peu redondant. Mais il semble être inévitable ... –

Questions connexes