dmi*_*sev 6 android annotations lint gradle
在我的Result类中,我使用@IntDef注释newInstance()方法中的第一个整数参数,如下所示:
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 {}
}
Run Code Online (Sandbox Code Playgroud)
接下来,在我的Utils类中,我调用该方法并将正确的常量作为参数传递.我确保我使用这样的特定常量:
public static Result foo() {
// ...
return Result.newInstance(Result.SUCCESS, contentUri); // line 45
}
Run Code Online (Sandbox Code Playgroud)
但是lint在安全性错误的情况下失败了
"WrongConstant:不正确的常量"
../../src/main/java/my/package/Utils.java:45:必须是以下之一:0,1,2
我知道可以简单地抑制这个错误.但是我想知道我的代码有什么问题?或许这是另一个问题?
我有一个@StringDef常数的类似问题.我想这个特别的Lint检查有一些问题.
在此期间,您可以使用@SuppressLint注释作为变通方法:
public static Result foo() {
// ...
@SuppressLint("WrongConstant")
return Result.newInstance(Result.SUCCESS, contentUri);
}
Run Code Online (Sandbox Code Playgroud)
编辑:此问题似乎是通过gradle插件版本1.4.0-beta1
问题182179修复 - android - Lint在androidTests中给出了错误的@StringDef错误
| 归档时间: |
|
| 查看次数: |
3349 次 |
| 最近记录: |