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