加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 我工厂出了什么问题?

发布时间:2020-12-15 04:51:40 所属栏目: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告诉我没有封闭的
我有一些像这样的代码:

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?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读