Creo mi enumeraciones a través de la reflexión , para que añado a cada una enumeración de una clase interna que implementa el fábrica abstracta. Ahora quiero ver esta clase interna con el fin de invocar el método:clase Anotar con clase 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 definición de @Factory
es:
@Retention(RetentionPolicy.RUNTIME)
public @interface Factory {
Class<?> value();
}
Con esto, sin embargo, recibo el error siguiente:
La clase no se puede resolver en un tipo FooFactory.java
Cuando intento @Factory(Foo$FooFactory.class)
recibo el error :
El anidada Foo $ FooFactory no puede ser referneced utilizando su nombre binario.
¿Es posible incluso hacer referencia a una clase anidada?
Sospecho que FooFactory debe ser 'public static class'. – Charlie
@Charlie Ya lo intenté. –
las enumeraciones son generalmente para valores conocidos fijos. Esto parece un poco extraño. –