首页 > 解决方案 > Android Studio 错误地将条件标记为始终为真

问题描述

我有一个打算被子类化的类。有一个变量和一个查看变量的方法:

protected int base = 10;

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

Android Studioif (base == 10)Condition 'base == 10' is always 'true'.

但事情是这样的:即使我的班级base总是 10 ,我的子班级也会改变为其他值。所以并不总是正确的。basebase == 10

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

标签: javaandroid-studiointellij-ideaandroid-studio-4.0

解决方案


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

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

您可能可以更改 lint 设置。


推荐阅读