簡體   English   中英

我工廠出了什么問題?

[英]What's wrong with my factory?

我有一些像這樣的代碼:

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告訴我No enclosing instance of type Foo is accessible. 那我怎么能讓它運作起來呢?

我試圖讓它盡可能簡單,看它是否會編譯:

public abstract class Foo {
    public static Foo getFoo() {
        return new FooImpl();
    }

    private static class FooImpl extends Foo {
        public FooImpl() { }
    }
}

我仍然得到同樣的錯誤。 我錯過了什么?

固定! 我更改了行return new FooImpl(); return new Foo.FooImpl();

這里有 FooImpl解釋 - 簡而言之,你需要使類FooImpl static ,所以它只與外部類相關聯,而不是外部類的特定實例 (你沒有)。 getFoo方法也看起來應該是靜態的,順便說一句-否則,什么情況下Foo是你在調用它的規划?

你打算怎么打電話給getFoo()

除非你做的事情完全是時髦和激進的,否則你需要讓它變得static

使FooImplstatic ,它將工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM