@ аннотации больше не работают - PullRequest
0 голосов
/ 23 мая 2018

Я определил этот @IntDef

public static final int LINE = 0;
public static final int CORNER = 1;

@IntDef({LINE, CORNER})
@Retention(RetentionPolicy.SOURCE)
public @interface ShapeTypes {}

и назначил его одному из моих учеников, как этот

public @ShapeTypes int shapeType;

, и если я правильно помню, он работал, нотеперь в Android Studio 3.1.2 я могу сделать что-то вроде этого

myClassObj.shapeType = 99;

Разве это не должно вызывать ошибки компиляции и / или выполнения?Есть ли способ определить диапазон допустимых значений для переменных сейчас?

Обновление Кажется, что все аннотации больше не работают.

@IntRange(from = 4, to = 18)
public int size;

делаетне влияет на утверждение size = 20;

Я что-то упустил?Какие-нибудь настройки для включения аннотаций?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

У меня такая же проблема в Android Studio 3.1.2.Но один из моих коллег протестировал его в 3.1.0, и похоже, что он работает в этой версии.

0 голосов
/ 23 мая 2018

IntDef обрабатывается как enum, поэтому вы не можете инициализировать позже.Вы заявили вручную.

@IntDef({ShapeTypes.SHAPETYPE})
@Retention(RetentionPolicy.SOURCE)
@interface ShapeTypes {
    int SHAPETYPE= 0;
}

Для более подробной информации смотрите это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...