Intereting Posts
ViewPager setCurrentItem замораживает поток пользовательского интерфейса Встроенное видео youtube на сенсорном устройстве, отображающее контекстное меню контекстного меню автоматически Веб-просмотр не загружается в первый раз Как реализовать несколько push-уведомлений GCM в одном приложении? Установка высоты представлений в окне Scrollview в android Анимация и setVisibility Требуется создать ускоренную прокрутку с передним charecter для отображения на экране, когда пользователь перетаскивает список алфавита Как обрабатывать сообщение об ошибке «FontFamily bestFont == NULL, так что возвратите свободную FakedFont» Создание меню на Android Что такое «реализация» в зависимостях Kotlin Gradle? ResultReceiver.send можно вызывать только из той же группы библиотек Дизайнер дал мне PSD. Теперь, как мне создать макет для Android? Android SQLiteException: не удалось изменить локаль для db в 'en_US' Как создать модное навигационное меню на мобильном устройстве и предотвратить прокрутку тела? OnClickListener на вкладках не работает

Использование интерфейсов для констант пространства имен в Android

Из того, что я читал с использованием интерфейсов для определения констант, обычно рассматривается в Java, за исключением случаев, когда вы предполагаете, что константы, наследуемые классами, реализуют интерфейс. Но я часто встречался с кодом, подобным этому, в программах Android:

interface Tags { String BLOCK = "block"; String TITLE = "title"; String START = "start"; String END = "end"; String TYPE = "type"; } 

Лично мне нравится иметь возможность группировать константы вместе, как это, в пространство имен. Итак, мой вопрос – есть ли недостаток в этом? Я предполагаю, что это, вероятно, не так эффективно, как использование статических окончательных строк, поскольку компилятор может их встроить.

Во-первых, знайте, что поля в интерфейсе неявно статичны и окончательны.

Постоянные интерфейсы обычно рассматриваются как анти-шаблон (см. http://en.wikipedia.org/wiki/Constant_interface ). Лучшая альтернатива:

 public final class Tags { public static final String BLOCK = "block"; // Other constants... private Tags() {} } 

Поскольку класс Tags является окончательным, ни один класс не может его расширять. Вместо этого классы, которые хотят использовать константы из Tags просто выполняют:

 import my.package.Tags; 

а потом:

 System.out.println(Tags.BLOCK); 

С Java 5 константы можно импортировать напрямую:

 import static my.package.Tags.BLOCK; // Other static imports... 

Поэтому их можно использовать так:

 System.out.println(BLOCK);