我试图在枚举中实现一个抽象方法,如下面的代码所示,但是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
实例。