我试图在枚举中实现一个抽象方法,如下面的代码所示,但是Eclipse强调了.getUrls方法并显示了工具提示“此方法需要一个主体而不是分号,这是两个快速修复:(添加主体,添加' abstract'修饰符)”,这对我来说都没有意义。

该方法本身只是在其他类中可用的普通方法。

我做错了什么?

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();
    }
}

最佳答案

一个问题是,以下行在语法上无效:

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


另一个问题是您不能从static访问Site的非PORTAL1成员。您需要制作UrlManager static,或者让每个Site子类都有自己的UrlManager实例。

10-07 13:14