2011-01-05 8 views
0

J'ai une signature de la méthode qui ressemble àComment extraire un type générique de arg

public void (Foo<T> foo) 

Dans cette méthode, je dois appeler une méthode qui prend

Class<T> clazz

comme argument. Comment puis-je obtenir une référence de type Class<T> de foo? Merci

Répondre

3

En raison de l'effacement de type, vous ne pouvez pas accéder directement aux paramètres de type. L'information est simplement absente lors de l'exécution. API qui a besoin de référence au type doit prendre instance d'objet de classe de classe de paramètres ...

abc public void (Foo < T> toto, classe < T> clazz)

+0

Java 7 est censé être l'ajout de types génériques réifiées avec lequel vous pourrez résoudre ce problème – LINEMAN78

0

Etes-vous sûr que votre signature de la méthode est correcte ?

Je pense que sans classe T vous ne pouvez pas faire de l'argument ressemble

public void method(Class<T> obj){ 
} 

Le type d'argument doit être présent, de sorte que vous connaissez déjà le type d'entrée.
Lorsque vous modifiez dans ceci:

public <T> void method(T u){ 
    System.out.println("U: " + u.getClass().getName()); 
} 

Vous devriez être en mesure d'obtenir le nom de classe ou tout simplement référence de classe, non?

Docs:
http://download.oracle.com/javase/tutorial/java/generics/genmethods.html

+0

Oui, j'omis par inadvertance le . Bonne suggestion, je vais essayer ça. – Andrew

+0

laissez-moi savoir si cela a aidé :) GL;) –

Questions connexes