2016-10-28 2 views
-3

Je suis en train d'essayer de comprendre comment fonctionne le compareTo, donc je lis quelques problèmes en ligne et l'un d'eux estbesoin d'aide pour comprendre comment le compareTo fonctionne

Supposons que nous avons les types énumérés ci-dessous: enum Chambres {BH310, BH311, BH312F}. Le test suivant serait-il vrai ou faux? Expliquer pourquoi.

Chambres. BH310. compareTo (Chambres BH311)> 0

n'est-ce pas vrai parce que nous supposons que c'est vrai? comme Java le rend vrai sans l'appeler vrai?

+0

Veuillez essayer de préciser ce que vous voulez dire. –

+3

"n'est-ce pas vrai parce que nous supposons que c'est vrai" est cette philosophie? –

+0

@ScaryWombat Je veux dire que java ne le définit pas automatiquement quand vous ne l'appelez pas? –

Répondre

1

un commentaire dans le openjdk 9dev/jdk/src/java.desktop/share/classes/javax/print/attribute/EnumSyntax.java:

Sous le capot, une valeur d'énumération est juste un nombre entier, un nombre entier différent pour chaque valeur d'énumération au sein d'une classe d'énumération.

Dans votre exemple,

enum Rooms{BH310, BH311, BH312F} 

équivaudrait à:

Integer BH310=0; 
Integer BH311=1; 
Integer BH312F=2; 

En effet, chaque valeur ENUM est représentée par un entier. Si vous avez modifié l'ordre des valeurs enum, les opérations compareTo retourneront différemment. Dans la représentation ci-dessous nous obtenons 1 imprimé à l'écran:

public enum Rooms { 
    BH311, BH310, BH312F; 
} 
public static void main(String[] args) { 
     System.out.println(Rooms.BH310.compareTo(Rooms.BH311)); 
} 

Cependant, dans le code ci-dessous nous obtenons -1 imprimé à l'écran.

public enum Rooms { 
    BH310, BH311, BH312F; 
} 
public static void main(String[] args) { 
     System.out.println(Rooms.BH310.compareTo(Rooms.BH311)); 
} 

En termes simples, quand 0.compareTo(1) est effectuée, nous obtenons -1 en conséquence et quand 1.compareTo(0) est effectuée, nous obtenons 1 en conséquence.