Creo il mio enumerazioni attraverso riflessione, per questo aggiungo ad ogni enum una classe interna che implementa l'Abstract Factory . Ora voglio accedere a questa classe interna, al fine di richiamare il metodo:classe Annotate con classe interna
@Factory(FooFactory.class)
public enum Foo {
FOO, BAR;
public class FooFactory implements AbstractFactory<Foo> {
public Foo create(String value) {
return valueOf(value.toUpperCase());
}
}
}
La definizione di @Factory
è:
@Retention(RetentionPolicy.RUNTIME)
public @interface Factory {
Class<?> value();
}
Con questo, però, ricevo il seguente errore:
Classe non risolvibile con un tipo FooFactory.java
Quando provo @Factory(Foo$FooFactory.class)
ricevo l'errore :
Il nidificato Foo $ FooFactory non può essere referneced utilizzando il suo nome binario.
Quindi è possibile anche fare riferimento a una classe annidata?
Sospetto che FooFactory debba essere "public static class". – Charlie
@ Charlie l'ho già provato. Le enumerazioni –
di solito sono per valori fissi noti. Questo sembra strano. –