Комментарий в OpenJDK 9dev/jdk/src/java.desktop/share/classes/javax/print/attribute/EnumSyntax.java
:
Под капотом, значение перечисления только целое число, другое целое число для каждого значения перечисления в пределах класса перечисления.
В вашем примере,
enum Rooms{BH310, BH311, BH312F}
было бы эквивалентно:
Integer BH310=0;
Integer BH311=1;
Integer BH312F=2;
Это происходит потому, что каждое значение перечисления представлен целым числом. Если вы изменили порядок значений перечисления, операции compareTo будут возвращаться по-разному. В следующем представлении мы получаем 1
, выводимой на экран:
public enum Rooms {
BH311, BH310, BH312F;
}
public static void main(String[] args) {
System.out.println(Rooms.BH310.compareTo(Rooms.BH311));
}
Однако в коде перечисленных ниже мы получаем -1
, выводимой на экран.
public enum Rooms {
BH310, BH311, BH312F;
}
public static void main(String[] args) {
System.out.println(Rooms.BH310.compareTo(Rooms.BH311));
}
Проще говоря, когда 0.compareTo(1)
выполняется мы получаем -1
в результате и когда 1.compareTo(0)
выполняется мы получаем 1
как результат.
Пожалуйста, постарайтесь объяснить, что вы имеете в виду. –
'это не правда, потому что мы предполагаем, что это правда? Является ли эта философия? –
@ScaryWombat Я имею в виду, не java автоматически устанавливает его в true, когда вы его не называете? –