Podanie domyślnej implementacji compareTo, która używa kolejności kodu źródłowego, jest w porządku; uczynienie go ostatecznym było błędem ze strony Sun. Porządek porządkowy już uwzględnia kolejność deklaracji. Zgadzam się, że w większości sytuacji programista może po prostu logicznie uporządkować swoje elementy, ale czasami chce się, aby kod źródłowy był zorganizowany w sposób, który sprawia, że czytelność i konserwacja są najważniejsze. Na przykład:
KILOBYTE (false, true, 3, "kB"),
MEGABYTE (false, true, 6, "MB"),
GIGABYTE (false, true, 9, "GB"),
TERABYTE (false, true, 12, "TB"),
PETABYTE (false, true, 15, "PB"),
EXABYTE (false, true, 18, "EB"),
ZETTABYTE(false, true, 21, "ZB"),
YOTTABYTE(false, true, 24, "YB"),
KIBIBYTE(false, false, 10, "KiB"),
MEBIBYTE(false, false, 20, "MiB"),
GIBIBYTE(false, false, 30, "GiB"),
TEBIBYTE(false, false, 40, "TiB"),
PEBIBYTE(false, false, 50, "PiB"),
EXBIBYTE(false, false, 60, "EiB"),
ZEBIBYTE(false, false, 70, "ZiB"),
YOBIBYTE(false, false, 80, "YiB");
Powyższa kolejność wygląda dobrze w kodzie źródłowym, ale autor uważa, że nie tak powinno działać funkcja compareTo. Żądanym zachowaniem compareTo jest uporządkowanie według liczby bajtów. Porządkowanie kodu źródłowego, które by to spowodowało, degraduje organizację kodu.
Jako klient wyliczenia nie obchodziło mnie, jak autor zorganizował swój kod źródłowy. Chciałbym jednak, żeby ich algorytm porównawczy miał jakiś sens. Firma Sun niepotrzebnie związała twórców kodu źródłowego.