布尔值在条件发生变化时会改变吗?

时间:2013-07-03 13:46:06

标签: java

boolean listIsEmpty = myList.size()==0; 

一旦listIsEmpty的大小发生变化,myList会变为false,这是一次性分配吗? 如果是后者,我可以使用“动态”布尔值来“监视”myList?

6 个答案:

答案 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变量