From 0057aaa20342d832b31b7281eb63c12ca263855f Mon Sep 17 00:00:00 2001 From: Joe <736777445@qq.com> Date: Mon, 12 Aug 2019 22:26:34 +0800 Subject: [PATCH] =?UTF-8?q?Update=2054.=20=E8=BF=94=E5=9B=9E=E7=A9=BA?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E7=BB=84=E6=88=96=E9=9B=86=E5=90=88=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E8=A6=81=E8=BF=94=E5=9B=9E=20null.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/notes/54. 返回空的数组或集合,不要返回 null.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/notes/54. 返回空的数组或集合,不要返回 null.md b/docs/notes/54. 返回空的数组或集合,不要返回 null.md index 49320e9..a71400c 100644 --- a/docs/notes/54. 返回空的数组或集合,不要返回 null.md +++ b/docs/notes/54. 返回空的数组或集合,不要返回 null.md @@ -16,7 +16,7 @@ public List getCheeses() { } ``` -  没有理由对没有奶酪(Cheese)可供购买的情况进行特殊处理。这样需要在客户端做额外的代码处理可能为 null 的返回值,例如: +  把没有奶酪(Cheese)可买的情况当做一种特例,这是不合常理的。这样需要在客户端中必须有额外的代码来处理 null 的返回值,如: ```java List cheeses = shop.getCheeses(); @@ -24,7 +24,7 @@ if (cheeses != null && cheeses.contains(Cheese.STILTON)) System.out.println("Jolly good, just the thing."); ``` -  在几乎每次使用返回 null 来代替空集合或数组的方法时,都需要使用这种迂回的方式。 它容易出错,因为编写客户端的程序员可能忘记编写特殊情况代码来处理 null 返回。 多年来这种错误可能会被忽视,因为这种方法通常会返回一个或多个对象。 此外,返回 null 代替空容器会使返回容器的方法的实现变得复杂。 +  在几乎每次使用返回 null 来代替空集合或数组的方法时,都需要使用这种迂回的方式。 这样做很容易出错,因为编写客户端的程序员可能忘记编写特殊情况代码来处理 null 返回。 多年来这种错误可能会被忽视,因为这种方法通常会返回一个或多个对象。 此外,返回 null 代替空容器会使返回容器的方法的实现变得复杂。   有时有人认为,null 返回值比空集合或数组更可取,因为它避免了分配空容器的开销。这个论点有两点是不成立的。首先,除非测量结果表明所讨论的分配是性能问题的真正原因,否则不宜担心此级别的性能(详见第 67 条)。第二,可以在不分配空集合和数组的情况下返回它们。下面是返回可能为空的集合的典型代码。通常,这就是你所需要的: