Android Studio 错误地将条件标记为始终为真

Android Studio falsely marks conditionals as always true

我有一个 class 打算被 class 编辑。有一个变量和一个查看变量的方法:

protected int base = 10;

private void rebuildDisplay() {
    if (base == 10) {
        dealWithBase10YadaYada(X);
    } else {
        dealWithOtherBase(X, base);
    }
}

Android Studio 用 Condition 'base == 10' is always 'true'.

标记 if (base == 10) 语句

但事情是这样的:即使 base 在我的 class 中总是 10 ,我的子 class 也会改变 base 到其他值。所以 base == 10 并不 总是正确的。

有没有办法告诉 AS 不要对受保护或 public 变量做出假设?我是否应该完全禁用此测试,如果是,如何禁用?哎呀,我应该报告错误吗?

这是一个问题(不是错误),因为它违反封装并将您的 class 实现与该变量联系起来。假设有一种更有效的方法可以在不使用 base 的情况下做任何你想做的事情;您不能更改代码,因为用户依赖于 base,这会破坏代码。

如果您需要,setBase() 方法可以更改其内部工作方式。

可能有一个可以更改的 lint 设置。