Java utilise l'effacement de type pour gérer les médicaments génériques. Cela signifie que toutes les informations sur les génériques ne sont vérifiées qu'au moment de la compilation, et que le bytecode résultant n'a aucune référence au fait que des génériques ont été utilisés.
List<String> stringList = new ArrayList<String>();
stringList.add("foo");
String s = stringList.get(0);
sera (après avoir fait des contrôles de temps de compilation sur les paramètres génériques) seront essentiellement compilez à la même chose que
List stringList = new ArrayList();
stringList.add("foo");
String s = (String)(stringList.get(0));
Ce que cela signifie est que vous ne pouvez pas faire des contrôles d'exécution sur un générique paramètre directement, comme ce que vous essayez de faire. Si vous avez un objet spécifique d'un type générique, vous pouvez utiliser l'opérateur instanceof
pour déterminer si cet objet est une instance d'une classe spécifique, mais vous ne pouvez rien faire sur le paramètre générique lui-même, car obtient effacé par type à l'exécution.
Quel est le but? Je suis désemparé de ce que vous faites .... –
vous pouvez utiliser le mot-clé JAVA mot-clé: http://www.java2s.com/Tutorial/Java/0060__Operators/TheinstanceofKeyword.htm –
@The Gentleman Elite, Comme dans Les interfaces Java ne peuvent pas être implémentées explicitement, je voulais faire une méthode qui dépend du type générique utilisé faire une opération. Mais pour être honnête, je suis juste curieux. –