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 设置。
我有一个 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 设置。