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

java – 为什么在这种情况下枚举比HashMap更有用?

发布时间:2020-12-15 04:59:32 所属栏目:Java 来源:网络整理
导读:这似乎是一个常见的问题,但是建议框中的所有项目都没有准确地解释我在想什么.在 this link,每个人都建议使用枚举类型(我现在已经研究过,但之前从未使用过).我打算建议简单地使用HashMap并阅读答案,看看Enum( http://docs.oracle.com/javase/tutorial/java/ja
这似乎是一个常见的问题,但是建议框中的所有项目都没有准确地解释我在想什么.在 this link,每个人都建议使用枚举类型(我现在已经研究过,但之前从未使用过).我打算建议简单地使用HashMap并阅读答案,看看Enum( http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)实际上是否是一个更好的答案.根据oracle上的那个链接,“你应该在任何需要表示一组固定常量的时候使用枚举类型.”所以,它是.

我的问题是……为什么?是否形成一份他们不会改变的合同?它是获取某些类功能的较短方式吗?性能如何?为什么这只是在同一个类中定义常量?

谢谢!

解决方法

枚举实例是对象,封装数据和行为就像任何其他对象一样.通过传递枚举实例,任何人都可以调用它的方法.例如,如果将Map键作为字符串传递,则无法对该键执行任何有用的操作.而且,代码的类型安全性较低,而且自我记录较少,因为String很可能与它应该完全不同.

什么是最可读的?

public int countDays(Set<Month> months,int year) {
    int count = 0;
    for (Month month : months) {
        count += month.getDays(year);
    }
    return count;
}

要么

public int countDays(Set<String> months,int year) {
    int count = 0;
    for (String month : months) {
        int days = monthMap.get(month);
        if (month.equals(Months.FEBRUARY)) {
            days = computeDaysInFebruary(year);
        }
        count += days;
    }
    return count;
}

如果我在集合中传递了除月份名称之外的其他内容,该怎么办?

(编辑:李大同)

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

    推荐文章
      热点阅读