Intereting Posts
Дооснащение 2 – тело нулевого ответа ListView с таймером Coundown. Таймер мерцает при прокрутке списка Есть ли способ добавить значок к значку приложения в Android? Запись / Geotag JPEG (данные EXIF) в Android Почему служба Android выходит из строя с помощью NullPointerException? Есть ли способ получить отладочный вывод с копированием и удалением в эмуляторе Android SDK? Требуется Gradle версия 1.10. Текущая версия – 2.2.1. В андроиде Android: Как автоматически перезапустить приложение после того, как оно было «принудительно закрыто»? Как настроить кнопку «вверх» при расширении searchView? Что может быть причиной java.net.SocketException: recvfrom failed: ETIMEDOUT? Выполнение не выполнено для задачи: app: compileDebugJavaWithJavac Уничтожить страницы в ViewPager и FragmentStatePagerAdapter Очистить задний стек с помощью фрагментов Студия Android Проблема: Не удалось найти рекламу: AdQuality: неуказано Android: элемент RecyclerView, если он установлен на блокируемые блокировки событий onTouch

Аннотации поддержки Android – Как использовать IntDef / StringDef (Typedef Annotations) с общим списком?

Недавно я начал использовать библиотеку поддержки Android IntDef / StringDef (Typedef Annotations). Я выполнил документацию на сайте Project Tools Project и не смог найти там или в любом другом соответствующем учебнике, как я могу использовать аннотации intpedef / StringDef typedef в массиве generics. Например, если у меня есть следующий фрагмент кода:

public static final String MEDIA_IMAGE = "image"; public static final String MEDIA_TEXT = "text"; public static final String MEDIA_LINK = "link"; public static final String MEDIA_AUDIO = "audio"; public static final String MEDIA_VIDEO = "video"; public static final String MEDIA_VOICE = "voice"; @StringDef ({MEDIA_IMAGE, MEDIA_TEXT, MEDIA_LINK, MEDIA_AUDIO, MEDIA_VIDEO, MEDIA_VOICE}) @Retention(RetentionPolicy.SOURCE) public @interface Media {} 

Я хотел бы сделать что-то подобное этому, используя массив generics и аннотации typedef:

 public List<@Media String> getMediaItems() { ... } public void setMediaItems(List<@Media String> mediaItems) { ... } 

Однако это кажется невозможным таким образом. Поскольку компилятор говорит:

«Аннотации типа не поддерживаются на этом языке»

Какие-либо предложения?

Solutions Collecting From Web of "Аннотации поддержки Android – Как использовать IntDef / StringDef (Typedef Annotations) с общим списком?"

Вы не можете аннотировать параметры типа в Java – язык этого не поддерживает. Единственное, что вы можете сделать с параметрами типа – сделать их ограниченными .

Если вы попытаетесь сделать что-то вроде private List<@Media String> mList с помощью JavaVersion.VERSION_1_7 вы получите

Аннотации типа не поддерживаются на этом уровне языка

Хотя вы можете сделать что-то вроде private @Media String[] mArray .
С JavaVersion.VERSION_1_8 private @Media List<String> mList будет работать.

Я буду честен, не побежал, чтобы проверить это, но не была получена ошибка Линта.