1

以下のコードのように列挙型に抽象メソッドを実装しようとしていますが、Eclipseは.getUrlsメソッドに下線を引き、ツールチップを表示しています。抽象'修飾子)」、どれも私には意味がありません。

メソッド自体は、他のクラスで機能する通常のメソッドです。

私が間違っているのは何ですか?

public enum Site {
    PORTAL1 ("http://www.somedomain.net") {
        @Override
        public void method() {
            ArrayList<String> urlList = urlManager.getUrls(int number);
        }
    };
    // more values

    public abstract void method();
    private final String baseUrl;
    private UrlManager urlManager;

    private Site(final String baseUrl) {
        this.baseUrl = baseUrl;
        urlManager = new UrlManager();
    }
}
4

4 に答える 4

4

1つの問題は、次の行が構文的に有効でないことです。

ArrayList<String> urlList = urlManager.getUrls(int number);
                                               ^^^^^^^^^^ HERE

もう1つの問題は、 fromの非staticメンバーにアクセスできないことです。を作成するか、すべてのサブクラスに独自ののインスタンスを持たせる必要があります。SitePORTAL1UrlManager staticSiteUrlManager

于 2012-11-28T14:36:12.217 に答える
2

の明らかな問題は別として、列挙型インスタンスからint number参照することはできません。urlManager各インスタンスからアクセスできるように保護することができます。

public enum Site {

    PORTAL1("http://www.somedomain.net") {
        @Override
        public void method() {
            ArrayList<String> urlList = urlManager.getUrls(5);
        }
    };
    // more values

    public abstract void method();
    private final String baseUrl;
    protected UrlManager urlManager;

    private Site(final String baseUrl) {
        this.baseUrl = baseUrl;
        urlManager = new UrlManager();
    }
}
于 2012-11-28T14:34:54.387 に答える
0

間違った構文が進行しています:

urlManager.getUrls(int number);

引数を渡す必要がある場所で変数を宣言しているようなものです。また、どこでurlManager宣言されていますか?

于 2012-11-28T14:37:53.287 に答える
0

enumクラスは抽象として宣言されておらず、おそらく抽象と呼ばれることさえ望まれないので、次のようにします。

public void method() {
    }

非抽象クラスは抽象メソッドを持つことはできません。

于 2012-11-28T14:32:57.350 に答える