我有一个例子,我对输出感到困惑。
enum Seasons {
WINTER,
SUMMER,
SPRING,
AUTUMN;
}
public class SeasonTest{
public static void main(String[] args) {
Seasons season1 = Seasons.WINTER;
Seasons season2 = Seasons.SUMMER;
Seasons season3 = Seasons.SPRING;
Seasons season4 = Seasons.AUTUMN;
System.out.println(season1.compareTo(season2));
System.out.println(season3.compareTo(season4));
System.out.println(season4.compareTo(season3));
System.out.println(season2.compareTo(season1));
System.out.println(season3.compareTo(season3));
System.out.println(season1.compareTo(season4));
}
}最后一行返回-3。为什么会这样呢?它应该返回-1,因为season1小于season4。为什么它会回来-3?
谢谢。
发布于 2015-01-14 19:49:45
允许compareTo()返回任何正数、负数或零。
它不需要具体返回+/- 1。
发布于 2015-01-14 19:54:56
Enum compareTo()是减除序数值,所以在您的示例中它是WINTER.ordinal() - AUTUMN.ordinal() = 0 - 3 = -3
发布于 2015-01-14 19:50:51
假设元素是整数排序的,
enum Seasons {
WINTER, // 0 \
SUMMER, // 1 \
SPRING, // 2 \
AUTUMN; // 3 --- difference is 3 (subtraction gives -3)
}https://stackoverflow.com/questions/27951185
复制相似问题