#java
Что лучше enum enum type { Int, Long, String, Boolean, Unknown } Или class public final class type { public final static byte Int = 0; public final static byte Long = 1; public final static byte String = 2; public final static byte Boolean = 3; public final static byte Unknown = 4; }
Ответы
Ответ 1
enum'ы надо использовать для какого-то диапазона: public enum Color{ White, Red, Blue } Константы для чего-то уникального, к примеру class Math{ public float PI = 3.14f; } Плюсы enum'ов? enum - это тип, так что можно так делать: enum Color { Red,Green,Blue }; enum Size { Big,Little }; void f( Color c ) { } void f( Size s ) { } int main() { f( Red ); f( Big ); } С константами не получится. Главное, как мне кажется, enum'ы - безопасны. Для enum'а вы указываете сигнатуру явно задавая тип: void f( Color c ){} Вы туда ничего другого кроме этого enum'а передать не сможете, иначе ругаться будет на уровне компилятора, вы даже собрать проект не сможете. Для констант было бы так: void f( int c ){} Если вы в этот метод передадите не ту константу, то ошибку заметите только в рантайме. UPD: про память. Если у вас, к примеру, есть enum: public enum Color{ White, Red, Blue } Скомпилируем этот enum задизасемблим полученный файл с помощью javap, получим что-то такое: Скомпилирован из "Color.java" public final class Color extends java.lang.Enum{ public static final Color White; public static final Color Red; public static final Color Blue; public static Color [] values(); public static Color valueOf(java.lang.String); static {}; } Так что да, какой-то оверхед по памяти будет.
Комментариев нет:
Отправить комментарий