gpt4 book ai didi

java - 如何以正确的方式使用 Enum?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:29:48 25 4
gpt4 key购买 nike

我非常喜欢 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 具有三个常量 DEVELOPMENTPRODUCTIONSANDBOXWeb 类也有 baseUrlEnvironmentbaseUrl 将被设置(不确定这是这样做的好习惯)。

为了设置 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com