Initialisation de liste de classes internes
Bonjour à tous,
J'essaye d'initialiser une liste d'instances de classes nested de la manière suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public abstract class OuterClass {
private static List<OuterClass> classes;
static {
classes = new ArrayList<OuterClass>();
classes.add(new InnerClass1());
classes.add(new InnerClass2());
}
public static List<OuterClass> getClasses() {
return classes;
}
public abstract int getValue();
public class InnerClass1 extends OuterClass{
public int getValue() {
return 0;
}
}
public class InnerClass2 extends OuterClass {
public int getValue() {
return 1;
}
}
} |
L'objectif est de pouvoir utiliser ça de la manière suivante :
Code:
1 2 3 4
|
for (OuterClass oc : OuterClass.getClasses()) {
System.out.println(oc.getValue());
} |
Le problème est que le compilateur me retourne l'erreur suivante :
No enclosing instance of type InnerClass is accessible. Must qualify the allocation with an enclosing instance of type InnerClass (e.g. x.new A() where x is an instance of InnerClass).
Pourquoi pas mais comme la classe OuterClass est abstraite comment faire ?
Merci pour vos réponses.