请问关于java中list.size() \u003c=0的问题

首先想问下这个判定条件是在什么情况下使用补充下,其他同学说的很有道理。稍微做个补充,判断list.size() \u0026lt;= 0 是做出了防御性编程,因为list的实现不一定仅有arraylist这种使用数组的,还会有其他的list实现,甚至是自己的list实现,那么在这种情况下我们针对接口编程 List list = new ? ; 我们不知道这个list的具体实现是什么。补上size()的定义 /** * Returns the number of elements in this list. If this list contains * more than \u0026lt;tt\u0026gt;Integer.MAX_VALUE\u0026lt;/tt\u0026gt; elements, returns * \u0026lt;tt\u0026gt;Integer.MAX_VALUE\u0026lt;/tt\u0026gt;. * * @return the number of elements in this list */由该定义可以看出返回的是节点的数量。使用list.size() \u0026lt;= 0 (溢出或者其他自定义实现逻辑错误,或者某种特殊的list实现会出现负节点数的数量时,例如并发消费者过多,生产者拿了钱还欠着货的情况:) )做一下特殊处理就很有必要了。针对与isEmpty。在接口中该函数给出的定义是 * Returns \u0026lt;tt\u0026gt;true\u0026lt;/tt\u0026gt; if this list contains no elements. * * @return \u0026lt;tt\u0026gt;true\u0026lt;/tt\u0026gt; if this list contains no elements该函数的主要意义在于定义自己的判断list是否为空的实现。两个函数语义不同。一般情况下如ArrayList 或者其他数组实现的。isEmpty基本满足需要,但是其他情况下还是需要考虑size \u0026lt;= 0的情况。
■网友
你的想法没有错,推荐用isEmpty。“\u0026lt;=0”的写法实际效果一样,但是太不直观
■网友
说个故事吧,曾经国内某一线互联网公司做活动送小礼品,判断礼品剩余数量==0则活动结束,结果因为并发问题,礼品剩余数量直接成了负数。事后想来,当初写成\u0026lt;=0该多好。
■网友
不知道你在哪里看到这段代码。不过别人也没写错不是么,加上小于的话可以避免万一JDK没写好,而出现的整数符号溢出错误。按我的理解这是防御性编程,当然用isEmpty或者==也是一样,只是个人偏好问题。


    推荐阅读