En Java, lorsqu'il s'agit de classes génériques, il est souvent nécessaire de déterminer le type spécifique qu'un type générique contient exécution. Cependant, les informations de type générique sont effacées lors de la compilation, ce qui rend difficile l'accès direct à celles-ci.
Prenons un exemple :
public class MyGenericClass<T> { public void doSomething() { T instance = (T) thirdPartyLib.create(T.class); } }
Dans ce scénario, T.class entraînera un Erreur littérale de classe illégale car le type générique T est inconnu. Pour résoudre ce problème, une solution de contournement est nécessaire.
Une solution de contournement efficace consiste à transmettre le type en tant que paramètre à une méthode statique, qui fournira les informations de classe à la classe générique. Voici un exemple :
public class MyGenericClass<T> { private final Class<T> type; public static <U> MyGenericClass<U> createWithClass(Class<U> type) { return new MyGenericClass<>(type); } private MyGenericClass(Class<T> type) { this.type = type; } public void doSomething() { T instance = type.newInstance(); } }
Cette méthode vous permet de transmettre explicitement le type de classe, garantissant que la classe générique a accès aux informations nécessaires. Bien que cette solution de contournement ne soit peut-être pas la solution la plus élégante, elle constitue un moyen fiable de déterminer la classe d'un type générique au moment de l'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!