我通过反射创建枚举,为此我向每个枚举添加一个实现抽象工厂的内部类。现在我想访问这个内部类以便调用方法:
@Factory(FooFactory.class)
public enum Foo {
FOO, BAR;
public class FooFactory implements AbstractFactory<Foo> {
public Foo create(String value) {
return valueOf(value.toUpperCase());
}
}
}
定义 @Factory
是:
@Retention(RetentionPolicy.RUNTIME)
public @interface Factory {
Class<?> value();
}
但是,我收到以下错误:
类不能解析为foofactory.java类型
当我尝试的时候 @Factory(Foo$FooFactory.class)
我收到错误:
不能使用其二进制名称引用嵌套的foo$foofactory。
那么,是否有可能引用嵌套类呢?
3条答案
按热度按时间l7mqbcuq1#
您使用的是一个非静态嵌套类,其作用域为枚举的各个示例。
相反,您需要一个静态嵌套类,如下所示:
然而,所有这些都是多余的:您只需调用
Foo.valueOf(value)
为了实现这个目标。我看不出这里有什么价值(没有双关语)。工厂.java
fooenum.java文件
fooenummain.java文件
jjhzyzn02#
从评论中。。。显然地
是需要的。
zour9fqk3#
在显示注解时,foofactory未定义,因此需要指定完整路径: