Аннотации поддержки 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 будет работать.

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