编程语言
首页 > 编程语言> > java – 我工厂出了什么问题?

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