Instanciation d'une classe interne
J'ai une méthode utilitaire et quand pertinence logique est retiré, la méthode simplifiée devrait ressembler à ceci:
public static <A extends Foo> List<A> getFooList(Class<A> clazz) {
List<A> returnValue = new ArrayList<A>();
for(int i=0; i < 5; i++) {
A object = clazz.newInstance();
returnValue.add(object);
}
return returnValue;
}
Le problème, c'est que si clazz
est un intérieur de classe comme Foo.Bar.class
puis le newInstance()
méthode ne fonctionnera pas, même si Bar
serait public, car elle permettra de jeter un java.lang.InstantiationException
.
Est-il possible d'instancier dynamiquement les classes internes?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Si c'est vraiment une intérieure classe au lieu d'un imbriquée (statique) de la classe, il y a un implicite paramètre du constructeur, qui est la référence de l'instance de l'extérieur de la classe. Vous ne pouvez pas utiliser
Class.newInstance
à ce stade - vous pour obtenir le constructeur approprié. Voici un exemple:Quelque chose de plus générique:
Cette exception sera levée que si clazz représente une classe abstraite ou une interface. Êtes-vous sûr que vous êtes de passage d'un objet de Classe qui représente un béton de classe?