加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 08:48:39 所属栏目:Java 来源:网络整理
导读:我非常喜欢 Java,我第一次使用枚举,如下所示: public class Web { public String baseUrl; public static enum Environment { DEVELOPMENT("http://development"),PRODUCTION("http://production"),SANDBOX("http://sandbox"); public final String baseUrl
我非常喜欢 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;
            }
        }
    }

枚举环境有三个常量DEVELOPMENT,PRODUCTION,SANDBOX. Web类还具有要设置Environment的baseUrl的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();
}

这样,我就不能偶然地调用新的Web().setEnvironment(“marvo”).它强制执行一定程度的正确性.

vishal_aim是对的.即使使用Enums,您也应该练习数据隐藏和封装,因此请将实例变量设为私有,并提供getBaseUrl()等访问器来检索值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读