そのようなケースの 1 つは、バンドルから int を読み取り、それを @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 にキャストする何らかの方法が必要です。
もう 1 つのケースは、そのような場合に Exception がスローされることをテストするために、意図的に間違ったパラメーターを渡すアノテーション付きパラメーターを使用して関数を呼び出すネガティブ テストを作成することです。このようなテストをコンパイルするには、アノテーション チェックを抑制する方法が必要です。