Nie jestem pewien, czy jest to definitywne oświadczenie, ale wydaje mi się, że Java API preferuje stałe ints ponad wyliczenia. Z części API, z której korzystałem, napotkałem wiele stałych final static int
, w których można było użyć enum
. Po takim przykładzie, że zdarza mi się patrzeć w tej chwili:Dlaczego biblioteki Java używają wartości stałych większych niż wyliczenia?
Od java.awt.BasicStroke:
public final static int CAP_BUTT = 0;
public final static int CAP_ROUND = 1;
public final static int CAP_SQUARE = 2;
W rzeczywistości, nie sądzę, bym kiedykolwiek widział enum używane w standardowej klasie Java API. Dlaczego to?
Projektuję interfejs API dla mojej własnej aplikacji (około miliard razy mniejszy niż interfejs API języka Java, ale nadal staram się być inteligentny) i próbuję zdecydować, czy użyć stałych wartości stałych lub wyliczeniowych. THIS zawiera odniesienia do bardzo popularnej książki, której jeszcze nie przeczytałem, co sugeruje, że wyliczenia mają wiele zalet. Większość innych wysoko ocenionych odpowiedzi w tym samym wątku zgadza się. Dlaczego więc Java nie używa własnych możliwości wyliczania?
Jedna myśl tylko wpadła mi do głowy zaraz po wysłaniu. Może 'enum' nie był dostępny w Javie dawno temu, kiedy wszystkie te klasy były zaprojektowane? – The111
'BasicStroke' pre-dates' enum', które dotarło do Java 1.5. – Reimeus
To prawdopodobnie kod, który został napisany zanim język wyliczony. Ponieważ jest to publiczny interfejs API, nie można go zmienić – James