枚举实例是对象,封装数据和行为就像任何其他对象一样.通过传递枚举实例,任何人都可以调用它的方法.例如,如果将Map键作为字符串传递,则无法对该键执行任何有用的操作.而且,代码的类型安全性较低,而且自我记录较少,因为String很可能与它应该完全不同.
什么是最可读的?
public int countDays(Set months, int year) {
int count = 0;
for (Month month : months) {
count += month.getDays(year);
}
return count;
}
要么
public int countDays(Set 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;
}
如果我在集合中传递了除月份名称之外的其他内容,该怎么办?