【发布时间】:2011-05-12 20:03:26
【问题描述】:
我见过两种处理带有属性的枚举的方法。一个比另一个好?
作为属性:
public enum SEARCH_ENGINE {
GOOGLE("http://www.google.com"),
BING("http://www.bing.com");
private final String url;
private SEARCH_ENGINE(String url) {
this.url = url;
}
public String getURL() {
return url;
}
}
作为一种方法:
public enum SEARCH_ENGINE {
GOOGLE {
public String getURL() {return "http://www.google.com";}
},
BING {
public String getURL() {return "http://www.bing.com";}
};
public abstract String getURL();
}
【问题讨论】:
-
第二个变种真的可以编译吗?它似乎为每个枚举常量创建单独的 类(这是您可以覆盖 getURL() 的唯一方法。第一个肯定更好。
-
就个人而言,我更喜欢第二个。它更灵活。但本质上他们在做同样的事情。
-
@mellamokb - 行为 可能相同。它如何被翻译成字节码和执行是非常不同的(是的,回答我之前的问题,它确实编译,它确实创建了匿名子类)
-
我总是使用第一个。我从来没有使用第二种方法来创建枚举。
-
@JustinKSU:嗯,这意味着 JIT 不太可能内联它。不过,我认为它变得重要的可能性几乎为零。
标签: java enums enumeration