Comment instancier un intérieur de classe avec la réflexion en Java?

J'essaie d'instancier l'intérieur de la classe définie dans le code Java suivant:

 public class Mother {
      public class Child {
          public void doStuff() {
              //...
          }
      }
 }

Lorsque j'essaie d'obtenir une instance de l'Enfant de cette

 Class<?> clazz= Class.forName("com.mycompany.Mother$Child");
 Child c = clazz.newInstance();

- Je obtenir cette exception:

 java.lang.InstantiationException: com.mycompany.Mother$Child
    at java.lang.Class.newInstance0(Class.java:340)
    at java.lang.Class.newInstance(Class.java:308)
    ...

Ce qui me manque ?

  • Uhm, l'intérieur de votre classe n'est pas statique... Est-ce fait exprès? Venant d'un C# arrière-plan peut-être? 😉
  • Merci pour suggérer "statique" idée! En fait, à l'aide d'une statique de la classe imbriquée au lieu d'un intérieur de classe me rendre la vie plus facile.
  • La chose est, si l'intérieure de la classe n'est pas déclarée statique, les instances de cette classe dépendent de l'existence d'une instance de l'extérieur de la classe; c'est à partir de C#, où toutes les classes internes sont "statiques" par défaut, et peut être instancié sans un parent de l'instance.
InformationsquelleAutor Stephan | 2013-07-05