在我的Result
课程中,我在newInstance()
方法中使用@IntDef第一个整数参数进行了注释,如下所示:
public class Result {
public static final int SUCCESS = 0;
public static final int FAIL = 1;
public static final int UNKNOWN = 2;
// ...
private Result(@Status int status, Uri uri) {
mStatus = status;
mUri = uri;
}
public static Result newInstance(@Status int status, Uri uri) {
return new Result(status, uri);
}
@Retention(RetentionPolicy.SOURCE)
@IntDef({ SUCCESS, FAIL, UNKNOWN })
@interface Status {}
}
接下来,在我的Utils
类中,我调用该方法并将正确的常量作为参数传递。我确保使用这样的特定常量:
public static Result foo() {
// ...
return Result.newInstance(Result.SUCCESS, contentUri); // line 45
}
但是lint在安全性错误
的情况下失败了" WrongConstant:不正确的常数"
../../ src / main / java / my / package / Utils.java:45:必须是以下之一:0,1,2
我知道可以简单地抑制此错误。但是我想知道我的代码有什么问题?或许它是另一个问题?
答案 0 :(得分:5)
我有@StringDef
常量的类似问题。我想这个特别的Lint检查有一些问题。
与此同时,您可以使用@SuppressLint
注释作为解决方法:
public static Result foo() {
// ...
@SuppressLint("WrongConstant")
return Result.newInstance(Result.SUCCESS, contentUri);
}
编辑:此问题似乎已通过gradle插件版本1.4.0-beta1修复 Issue 182179 - android - Lint gives erroneous @StringDef errors in androidTests
答案 1 :(得分:0)
与错误一样,值必须为0,1,2。
Result.SUCCESS的值为-1