Одним из таких случаев является чтение int из Bundle и сохранение его в переменной, ограниченной аннотацией @IndDef:
public class MainActivity extends ActionBarActivity {
@IntDef({STATE_IDLE, STATE_PLAYING, STATE_RECORDING})
@Retention(RetentionPolicy.SOURCE)
public @interface State {}
public static final int STATE_IDLE = 0;
public static final int STATE_PLAYING = 1;
public static final int STATE_RECORDING = 2;
@MainActivity.State int fPlayerState = STATE_IDLE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null)
fPlayerState = savedInstanceState.getInt(BUNDLE_STATE); //Causes "Must be one of: ..." error
Должен быть какой-то способ подавить проверку или кастинг от int до @MainActivity.State int, чтобы установить переменную в последней строке.
В другом случае нужно написать отрицательный тест, который вызывает функцию с аннотированным параметром, преднамеренно передающую неправильный параметр, чтобы проверить, что в этом случае возникает исключение. Должен быть способ подавить проверку аннотации, чтобы скомпилировать такой тест.