Я использовал для определения набора связанных констант, таких как Bundle, ключи в интерфейсе, как показано ниже:
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Это дает мне более удобный способ группировать связанные константы вместе и использовать их, создавая статический импорт (не реализует). Я знаю, что Android framework также использует константы так же, как Toast.LENTH_LONG, View.GONE.
Однако я часто чувствую, что Java Enums обеспечивает гораздо лучший и мощный способ представления константы.
Но есть ли проблема с исполнением при использовании enums на Android?
С небольшим количеством исследований я оказался в замешательстве. Из этого вопроса
"Избегайте перечислений, где вам нужны только инты" , удалены из рекомендаций по производительности Android? ясно, что Google удалил "Избегайте перечислений" из своих рекомендаций по производительности, но из него официальный doc Внимательно прочитайте раздел "Накладные расходы на память" , в котором четко сказано: "В Enums часто требуется более чем вдвое больше памяти, чем статические константы. enums на Android." Это все еще хорошо? (скажем, в версиях Java после 1.6)
Еще одна проблема, которую я наблюдал, - отправить enums через intents с помощью Bundle, я должен отправить их путем сериализации (т.е. putSerializable(), что, по моему мнению, дорогостоящая операция по сравнению с примитивным методом putString(), eventhough enums предоставляет его бесплатно).
Может кто-то прояснить, какой из них лучше всего представить в Android? Должен ли я строго избегать использования enums на Android?