gpt4 book ai didi

android - 如何在特殊情况下禁用 Android @IntDef 注释检查?

转载 作者:IT老高 更新时间:2023-10-28 22:05:36 25 4
gpt4 key购买 nike

这样的一种情况是从 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。

另一种情况是编写一个否定测试,调用带有注释参数的函数,故意传递错误的参数,以测试在这种情况下是否抛出异常。为了编译这样的测试,必须有一种方法来禁止注解检查。

最佳答案

我找到了抑制注释检查的方法。实际上,一共有三个:

  1. 在类的定义之前添加 @SuppressWarnings("ResourceType")。就我而言:

    @SuppressWarnings("ResourceType")
    public class MainActivity extends ActionBarActivity {
    ...
    }
  2. 在方法定义之前添加 @SuppressWarnings("ResourceType")。就我而言:

    @Override
    @SuppressWarnings("ResourceType")
    protected void onCreate(Bundle savedInstanceState) {
    ...
    }

这两种方法对我不起作用,因为我想对我的所有代码进行注释检查,除了一个语句。

  1. 要禁止对单行进行检查,请添加特殊格式的注释 (!!!)。

    //noinspection ResourceType
    fState = savedInstanceState.getInt(BUNDLE_STATE);

关于android - 如何在特殊情况下禁用 Android @IntDef 注释检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27474142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com