boolean listIsEmpty = myList.size()==0;
一旦listIsEmpty
的大小发生变化,myList
会变为false,这是一次性分配吗?
如果是后者,我可以使用“动态”布尔值来“监视”myList?
答案 0 :(得分:10)
简单答案:不,不。
表达式评估一次,然后boolean
中的结果不会改变。
要拥有这样一个“动态”boolean
,您必须使用一个能够实现他的侦听器来创建自己的列表。
答案 1 :(得分:3)
不,因为这不是定义数学关系,它定义了一组指令。执行完指令后,不能指望listIsEmpty
自动更新。
要进行自动更新,请查看“监听模式”。
要以更合理的方式编写此条件,List有责任知道它是否为空,这就是它包含isEmpty()
方法的原因。不是缓存此信息并对缓存执行操作,而是委托请求。
if (myList.isEmpty()) {
... do stuff ...
}
将阻止缓存返回列表空虚的陈旧视图。
答案 2 :(得分:2)
除非您再次查看此特定代码行,否则listIsEmpty
不会更改
要在列表大小增加后立即更改布尔值,应该在添加或删除某些内容时创建一个检查列表大小的方法。
答案 3 :(得分:2)
boolean listIsEmpty() {
return myList.isEmpty();
}
在该位置评估变量赋值。
使用上述函数,if (listIsEmpty()) { ... }
每次都会评估函数(方法)体。
答案 4 :(得分:1)
现在编写代码的方式,在重新评估大小之前不会改变。但是,您可以直接在列表中使用isEmpty()
检查,而不是这样做;这样,您就不必经常监视列表的大小。
答案 5 :(得分:1)
您的ListisEmpty
变量在您自行更改之前不会发生变化。每次更新ListIsempty
,
Mylist
变量