java – 我工厂出了什么问题?
作者:互联网
我有一些像这样的代码:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
abstract void DoFoo();
private class FooImpl extends Foo {
public FooImpl() { }
@Override
void DoFoo() { }
}
}
但Eclipse告诉我没有封闭的Foo类型的实例是可访问的.那我怎么能让它运作起来呢?
我试图让它尽可能简单,看它是否会编译:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
private static class FooImpl extends Foo {
public FooImpl() { }
}
}
我仍然得到同样的错误.我错过了什么?
固定!我更改了行返回new FooImpl();返回新的Foo.FooImpl();
解决方法:
优秀的解释here – 简而言之,你需要使类FooImpl静态,所以它只绑定到外部类,而不是外部类的特定实例(你没有). getFoo方法看起来也应该是静态的,顺便说一下 – 否则,你打算在什么时候调用Foo?
标签:java,factory-pattern 来源: https://codeday.me/bug/20190715/1472967.html