Java枚举中重写的抽象方法中的代码问题

Java枚举中重写的抽象方法中的代码问题,java,enums,abstract,Java,Enums,Abstract,我试图在下面的代码中在枚举中实现一个抽象方法,但是Eclipse在.getUrls方法下面加了下划线,并显示工具提示“此方法需要一个主体而不是分号,两个快速修复方法:(添加主体,添加'abstract'修饰符)”,这些对我来说都没有意义 该方法本身只是在其他类中工作的普通方法 我做错了什么 public enum Site { PORTAL1 ("http://www.somedomain.net") { @Override public void met

我试图在下面的代码中在枚举中实现一个抽象方法,但是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();
    }
}
公共枚举站点{
PORTAL1(“http://www.somedomain.net") {
@凌驾
公开作废法(){
ArrayList urlList=urlManager.getUrls(整数);
}
};
//更多价值
公开摘要无效方法();
私有最终字符串baseUrl;
私人经理;
私有站点(最终字符串baseUrl){
this.baseUrl=baseUrl;
urlManager=新的urlManager();
}
}

由于枚举类未声明为抽象类,甚至可能不希望被称为抽象类,请执行以下操作:

public void method() {
    }

非抽象类不能有抽象方法。

由于枚举类未声明为抽象类,甚至可能不希望被称为抽象类,请执行以下操作:

public void method() {
    }

非抽象类不能有抽象方法。

除了
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();
    }
}
公共枚举站点{
PORTAL1(“http://www.somedomain.net") {
@凌驾
公开作废法(){
ArrayList urlList=urlManager.getUrls(5);
}
};
//更多价值
公开摘要无效方法();
私有最终字符串baseUrl;
受保护的UrlManager UrlManager;
私有站点(最终字符串baseUrl){
this.baseUrl=baseUrl;
urlManager=新的urlManager();
}
}

除了
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();
    }
}
公共枚举站点{
PORTAL1(“http://www.somedomain.net") {
@凌驾
公开作废法(){
ArrayList urlList=urlManager.getUrls(5);
}
};
//更多价值
公开摘要无效方法();
私有最终字符串baseUrl;
受保护的UrlManager UrlManager;
私有站点(最终字符串baseUrl){
this.baseUrl=baseUrl;
urlManager=新的urlManager();
}
}

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

ArrayList<String> urlList = urlManager.getUrls(int number);
                                               ^^^^^^^^^^ HERE
ArrayList-urlList=urlManager.getUrls(整数);
^^^^^^^^^^这里

另一个问题是,您无法从
PORTAL1
访问
站点
的非
静态
成员。您需要使
UrlManager
静态
,或者让每个
站点
子类都有自己的
UrlManager

实例。一个问题是以下行在语法上无效:

ArrayList<String> urlList = urlManager.getUrls(int number);
                                               ^^^^^^^^^^ HERE
ArrayList-urlList=urlManager.getUrls(整数);
^^^^^^^^^^这里

另一个问题是,您无法从
PORTAL1
访问
站点
的非
静态
成员。您需要使
UrlManager
静态
,或者让每个
站点
子类都有自己的
UrlManager

实例。您的语法不正确:

urlManager.getUrls(int number);

你是在声明一个变量,在这里你应该传递一个参数。另外,
urlManager
在哪里声明?

您使用了一些不正确的语法:

urlManager.getUrls(int number);

你是在声明一个变量,在这里你应该传递一个参数。另外,
urlManager
在哪里声明?

number
前面的
int
做了什么?
int
number
前面做了什么?这不是唯一的问题。这是导致被询问错误的原因,尽管…:)这不是唯一的问题。这是导致被问及错误的原因,尽管…:)