[英]How do I disable Android @IntDef annotation checks in special cases?
其中一種情況是從Bundle中讀取一個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,以便在最后一行設置變量。
另一種情況是編寫一個負面測試,調用帶有注釋參數的函數故意傳遞錯誤的參數,以便測試在這種情況下拋出異常。 必須有一種方法來抑制注釋檢查以編譯這樣的測試。
我找到了抑制注釋檢查的方法。 實際上,有三個:
在類的定義之前添加@SuppressWarnings("ResourceType")
。 就我而言:
@SuppressWarnings("ResourceType") public class MainActivity extends ActionBarActivity { ... }
在方法定義之前添加@SuppressWarnings("ResourceType")
。 就我而言:
@Override @SuppressWarnings("ResourceType") protected void onCreate(Bundle savedInstanceState) { ... }
這兩種方法對我不起作用,因為我希望對所有代碼進行注釋檢查,除了一個語句。
要禁止檢查單行,請添加特殊格式的注釋(!!!)。
//noinspection ResourceType fState = savedInstanceState.getInt(BUNDLE_STATE);
@Status int state1=bundle.getInt(STATE_ELEMENT1);
setStatus1(state1);
//instead of direct setStatus1(bundle.getInt(STATE_ELEMENT1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.