`
leonzhx
  • 浏览: 793584 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Item 43: Return empty arrays or collections, not nulls

阅读更多

1.  It is errorprone to return null in place of an empty (zero-length) array or collection. Because the programmer writing the client might forget to write the special case code to handle a null return.

 

2.  It is possible to return the same zero-length array from every invocation that returns no items because zero-length arrays are immutable and immutable objects may be shared freely. In fact, this is exactly what happens when you use the standard idiom for dumping items from a collection into a typed array:

// The right way to return an array from a collection
private final List<Cheese> cheesesInStock = ...;
private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];
/**
* @return an array containing all of the cheeses in the shop.
*/
public Cheese[] getCheeses() {
    return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
}

 

Collection.toArray(T[]) guarantees that the input array will be returned if it is large enough to hold the collection.

 

3.  A collection-valued method can be made to return the same immutable empty collection every time it needs to return an empty collection. The Collections.emptySet, emptyList, and emptyMap methods provide exactly what you need.

 

4.  There is no reason ever to return null from an array- or collection-valued method instead of returning an empty array or collection.

 

分享到:
评论

相关推荐

    Effective Java 3rd edition(Effective Java第三版英文原版)附第二版

    Item 54: Return empty collections or arrays, not nulls Item 55: Return optionals judiciously Item 56: Write doc comments for all exposed API elements 9 General Programming Item 57: Minimize the scope ...

    Collection与Collections,Array与Arrays的区别

    Collection与Collections,Array与Arrays的区别 Collection与Collections的区别: Collection是一个接口,位于java.util包下,是各种集合结构的父接口。它提供了最基本的集合操作,如add、remove、contains等。...

    C# Lab Arrays and Collections

    public void Add(int item) { items.Add(item); } // 实现IEnumerable接口 // ... } MyCollection myCol = new MyCollection(); myCol.Add(10); myCol.Add(20); foreach (int i in myCol) { Console....

    c99-variable-length-array.rar_ARGUMENT!

    描述中的问题 "Cannot use any variably-modified type with a template parameter or argument." 暗示了在C++的模板编程中使用VLA可能会遇到问题。C++标准并不包含VLA,因此在C++代码中直接使用C99的VLA会导致编译...

    PHP.Arrays.in.PHP.7

    Gain an in-depth understanding of PHP 7 arrays. After a quick overview of PHP 7, each chapter concentrates on single, multi-dimensional, associative, and object arrays. PHP Arrays is a first of its ...

    Collections

    Immutable arrays do not allow modification once created, while mutable arrays can be modified by adding, removing, or replacing elements. Arrays are initialized either by specifying the number of ...

    java的Arrays类的应用.doc

    Java的`Arrays`类是Java Util包中的一个非常重要的工具类,它提供了许多方便的方法来操作数组,包括初始化、排序、查找以及比较等。在上述文档中,我们看到`Arrays`类的一些主要应用: 1. **给数组赋值**: - `...

    cpp_solution_arrays:HackerRank Arrays部分的解决方案

    本项目“cpp_solution_arrays”是针对HackerRank网站上Arrays专题的一系列解决方案,旨在帮助学习者掌握C++中数组的使用和算法处理。 1. **数组的定义与声明** C++中的数组是一系列相同类型的元素集合,存储在一个...

    C语言或者C++:2D and 3D arrays

    Fill the elements of the arrays with the numbers 1 - 12 in the order 1 2 3 4 5 6 7 8 9 10 11 12 Define another array B that will hold the elements of the transpose of A. Make up the transpose array ...

    Ayush_Arrays_objects_closures:Ayush_Arrays_objects_closures

    **数组(Arrays)** 数组是编程语言中用于存储一系列有序元素的数据结构。在JavaScript中,数组可以包含不同类型的值,如数字、字符串、对象等。数组的创建有两种方式: 1. `var myArray = [1, "two", true];` 2. ...

    【Java基础笔记】Java中常用工具类.docx

    本文主要探讨两个重要的工具类:Arrays和Collections,它们分别针对数组和集合提供了丰富的操作方法。 一、Arrays工具类 Arrays工具类位于`java.util`包下,主要用于对数组进行各种操作。以下是一些常用的方法: ...

    2009 达内Unix学习笔记

    回车&lt;return&gt; 继续打开下一行; b 另外开上一屏; f 另外开下一屏; h 帮助; q或Ctrl+C 退出; /字符串 从上往下查找匹配的字符串; ?字符串 从下往上查找匹配的字符串; n 继续查找。 四、退出命令 ...

    commons-collections-3.2.1.jar

    《Apache Commons Collections 3.2.1:Java集合框架的强大扩展》 Apache Commons Collections是Apache软件基金会的一个项目,它提供了一系列强大的、用于处理Java集合框架的工具类和算法。在这个项目中,`commons-...

    Java Arrays.sort和Collections.sort排序实现原理解析

    Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...

    Google-Guava-Collections-使用介绍

    ### Google Guava Collections 使用介绍 #### 一、概述 Google Guava Collections 是 Java Collections Framework 的一个强大且实用的非官方扩展 API。它由 Google 工程师 Kevin Bourrillion 和 Jared Levy 在著名...

    leon9dragon#all_blogs#061.JAVA集合框架_Arrays类和Collections类1

    1.1. Arrays 类的常用方法 1.2.1. emptyList()/emptyMap()/emptySet() 方法 1.2.7. synchroniz

    Microphone Arrays : A Tutorial

    ### Microphone Arrays:一个教程 #### 标题与描述解读 标题“Microphone Arrays : A Tutorial”明确指出了本文档的主要内容是关于麦克风阵列的技术教程。麦克风阵列是一种由多个麦克风组成的空间配置,用于捕捉...

    Introduction to Parallel Algorithms - Arrays Trees Hypercubes

    The contents itself is organized in three chapters according to the network architecture: arrays and trees for Chapter 1 (117 pages), meshes of trees for Chapter 2 (117 pages), and hypercubes and ...

    Java Collections.pdf

    根据提供的文件信息,我们可以推断出这是一本关于Java Collections的书籍,作者为John Zukowski。下面将基于这些信息来生成相关的Java Collections知识点。 ### Java Collections 概览 #### 一、简介 Java ...

    commons-Collections最常用类介绍.pdf

    2. 操作类:以Collections和Arrays为代表的类,用于对集合类的实例进行复杂的操作。比如,Collections类可以用来对列表进行排序、查找、填充等操作。这些操作类通常不直接持有数据,而是通过调用容器类实例的方法来...

Global site tag (gtag.js) - Google Analytics