gpt4 book ai didi

android - Lint 构建失败,出现安全错误 "WrongConstant: Incorrect constant"。 IntDef 注释

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:58:45 26 4
gpt4 key购买 nike

在我的 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 {}
}

接下来,在我的 Utils 类中调用该方法并将正确的常量作为参数传递。我确保我使用像这样的特定常量集:

public static Result foo() {
// ...
return Result.newInstance(Result.SUCCESS, contentUri); // line 45
}

但是 lint 构建失败并出现安全错误

"WrongConstant: Incorrect constant"

../../src/main/java/my/package/Utils.java:45: Must be one of: 0, 1, 2

我知道可以简单地抑制这个错误。但我想知道我的代码有什么问题?还是其他问题?

最佳答案

我对 @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

关于android - Lint 构建失败,出现安全错误 "WrongConstant: Incorrect constant"。 IntDef 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259630/

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