Trong lớp Result
tôi chú thích với @IntDef tham số nguyên đầu tiên trong phương pháp newInstance()
như thế này:Lint không xây dựng được với lỗi bảo mật "WrongConstant: Incorrect constant". IntDef chú thích
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 {}
}
Tiếp theo, trong lớp Utils
tôi gọi phương thức đó và vượt qua liên tục đúng như thông số. Tôi chắc chắn rằng tôi sử dụng tập hợp cụ thể của các hằng số như thế này:
public static Result foo() {
// ...
return Result.newInstance(Result.SUCCESS, contentUri); // line 45
}
Nhưng lint không xây dựng với an ninh lỗi
"WrongConstant: liên tục sai"
../ .. /src/main/java/my/package/Utils.java:45: Phải là một trong: 0, 1, 2
Tôi biết rằng lỗi này có thể đơn giản y bị đàn áp. Nhưng tôi muốn biết có gì sai với mã của tôi? Hoặc có thể đó là một vấn đề khác?
Rất lạ, tôi thậm chí không tìm thấy định nghĩa cảnh báo lint như vậy –