我非常喜欢 Java,我第一次像这样使用枚举:
public class Web {
public String baseUrl;
public static enum Environment {
DEVELOPMENT("http://development") ,
PRODUCTION("http://production"),
SANDBOX("http://sandbox");
public final String baseUrl;
private Environment(String baseUrl)
{
this.baseUrl = baseUrl;
}
}
}
枚举 Environment
具有三个常量 DEVELOPMENT
、PRODUCTION
、SANDBOX
。 Web
类也有 baseUrl
,Environment
的 baseUrl
将被设置(不确定这是这样做的好习惯)。
为了设置 baseUrl
我目前是这样做的:
new Web().setBaseUrl(Web.Environment.PRODUCTION.baseUrl)
我不确定这是在类中使用枚举的正确方法。有什么方法可以直接将 Web
baseUrl
设置为枚举 baseUrl
。
我是不是漏掉了什么。
提前致谢
最佳答案
我认为您走在正确的轨道上,但是通过以这种方式访问 URL,您正在失去 Java 枚举的一些优势。相反,使用枚举的类型来帮助确保您将正确的值传递给您的方法。也就是说,单独传递枚举,让方法从中提取任何值。例如:
new Web().setEnvironment(Web.Environment.PRODUCTION);
现在您只能将环境传递给您的 Web 类,而不是任何其他字符串。
[编辑] 那么您的 Web.setEnvironment 方法如下所示:
public void setEnvironment(Environment environment) {
this.baseUrl = environment.getBaseUrl();
}
这样,我就不会无意中调用 new Web().setEnvironment("marvo")
。它强制执行一定程度的正确性。
而 vishal_aim 是对的。即使使用枚举,您也应该练习数据隐藏和封装,因此将实例变量设为私有(private),并提供像 getBaseUrl() 这样的访问器来检索值。
关于java - 如何以正确的方式使用 Enum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854856/