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

这是一次性分配的大小更改后会listIsEmpty立即更改为 false吗?myList如果是后者,我可以有一个“监视”的“动态”布尔值吗myList?

4

6 回答 6

10

简单的答案:不和不。

表达式被评估一次,然后你的结果boolean不会改变。

要拥有这样的“动态” boolean,您必须创建自己的列表,其中包含能够实现他的听众。

于 2013-07-03T13:47:41.773 回答
3

不,因为这不是定义数学关系,而是定义一组指令。指令执行后,不能指望listIsEmpty自动更新。

要进行自动更新,请查看“侦听器模式”。

为了以更明智的方式编写此条件,List 有责任知道它是否为空,这就是它包含isEmpty()方法的原因。委托请求而不是缓存此信息并作用于缓存。

if (myList.isEmpty()) {
  ... do stuff ...
}

将防止缓存返回列表空的陈旧视图。

于 2013-07-03T13:52:34.507 回答
2

除非您再次查看此特定代码行,否则您listIsEmpty不会改变

要在列表大小增加时立即更改布尔值,应制定一种方法,在添加或删除某些内容时检查列表大小。

于 2013-07-03T13:46:51.247 回答
2
boolean listIsEmpty() {
    return myList.isEmpty();
}

在该位置评估变量分配。

使用上述函数,if (listIsEmpty()) { ... }每次都评估函数(方法)主体。

于 2013-07-03T13:48:07.137 回答
1

现在编写代码的方式,在重新评估大小之前不会改变。但是,您可以isEmpty()直接在您的清单上使用支票,而不是这样做;这样,您就不必经常监控列表的大小。

于 2013-07-03T13:49:28.617 回答
1

在您自己更改之前,您的ListisEmpty变量不会改变。ListIsempty每次更新你的变量时,你都必须更新你的变量Mylist

于 2013-07-03T13:49:36.537 回答