java - 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 ,我的子班级也会改变为其他值。所以并不总是正确的。base
base == 10
有没有办法告诉 AS 不要对受保护或公共变量做出假设?我应该完全禁用这个测试吗?如果是,怎么做?哎呀,我应该报告错误吗?
解决方案
这是一个问题(不是错误),因为它违反封装并将您的类实现与该变量联系起来。假设有一种更有效的方法可以在不使用 base 的情况下做任何你想做的事情;你不能改变你的代码,因为用户依赖基础,它会破坏代码。
如果您需要, setBase() 方法可以更改其内部工作方式。
您可能可以更改 lint 设置。
推荐阅读
- flutter - 图像未在 Flutter 中显示
- java - 如何测试我的脚本 sh 是否仍在由 JAVA 运行
- python - 带有软删除的 SQLAlchemy 关联表
- django - Django all-auth:如何通过 Google 禁用自动登录
- sql-server - SQL查询列出特定数据库/服务器中的所有表+列?
- c++ - g++ 的分段错误(在 NaN 上使用两次 to_string 时)
- c# - 有没有办法减少加载 cshtml 视图的时间?
- javascript - 如何更新数组javascript中对象的内容
- arrays - Python Numpy 将奇怪的空格串起来
- ios - 使用导航栏模态显示 ViewController 不会更改 stackView