繁体   English   中英

Java Enum属性最佳实践

[英]Java Enum property best practice

我已经看到两种处理具有属性的枚举的方法。 这个比那个好吗?

作为财产:

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();
}

第一个显然对我来说更清晰 - 它利用了枚举的每个元素将具有固定字符串URL的通用性,该URL在初始化时是已知的。 您在第二个版本中的每个实现中都有效地重复了“逻辑”。 在每种情况下,您都要重写一个提供相同逻辑的方法(“只返回编译时已知的字符串”)。 我更愿意保留压倒行为的改变。

我建议首先将url字段url私有字段。

看看Josh Bloch的Effective Java这一章中的第 21项。 它讨论了类型安全的枚举模式。

如果您忘记添加网址,编译器会抱怨,我会选择第一个。 第二个会让你在这里犯错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM