Java中应该返回零长度数组或空集合,而不是返回null(转)

说明:为了避免在数组和集合的获取上增加null的判断,同时也能减少不必要的空指针异常,通常会在业务返回零数组或空集合。

方法:

1、数组:

定义全局静态常量来减少内存开销:private static final int EMPTY_ARRAY = new int[0];,当然,也可以直接局部变量等等。

2、集合:

使用工具类Collections的emptyList()进行放回。

参考:

http://blog.csdn.net/tounaobun/article/details/8502160

https://www.codeproject.com/Articles/794448/Is-it-Really-Better-to-Return-an-Empty-List-Instea

原文地址:https://www.cnblogs.com/EasonJim/p/8450164.html

时间: 2024-10-28 17:31:09

Java中应该返回零长度数组或空集合,而不是返回null(转)的相关文章

零长度数组意义

在_C++ Primer_动态数组中提到:动态分配一个空数组是合法的. size_t n = get_size(); int* p = new int[n]; for(int* q = p; q != p + n; ++q) char arr[0];//错误 char cp = new char[0]; 当我们用new分配一个大小为0的数组时,new返回一个合法的非空指针.此指针保证与new返回的其他任何指针不相同,对于零长度的数组来说,此指针就像尾后指针一样.我们可以像尾后迭代器一样使用这个指

GNU C中的零长度数组(转载)

GNU C中的零长度数组(转载) 原文链接:http://blog.csdn.net/ssdsafsdsd/article/details/8234736 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收起来

C语言中的零长度数组使用说明

C语言中的零长度数组用法详解 在C语言中允许在结构体和联合体中定义零长度的数组,写法可以是以下两种: char p[]或者char p[0],这个数组定义在结构体或者联合体中,不占用空间大小. 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势: 1.不需要初始化,数组名直接就是所在的偏移: 2.不占任何空间,指针需要占用int长度空间,空数组不占任何空间. "这个数组不占用任何内存",意味着这样的结构节省空间:"该数组的内存地址就和他后面的元素的地址

Effective Java 之-----返回零长度的数组或集合而不是null

如下代码,通常用户列表为空时,会习惯性返回null,因为这时会认为:null返回值比零长度数组更好,因为它避免了分配数组所需要的开销. private final List<UserBean> UserList = null; public List<UserBean> getUserBean(){ if(UserList.size() == 0){ return null; }else{ return UserList; } } 但这种观点是站不住脚的,原因如下: 1) 在这个级

零长度数组的妙用

零长度是指定义数组时,指定其长度为0(如int arr[0];),这样的数组不占用实际的空间,但能通过数组名访问到其指向的地址.如下例所示: #include <stdlib.h> #include <stdio.h> struct device { int num; int count; int reserve[0]; /* * reserve是一个数组名:该数组没有元素:该数组的其实地址紧随结构体device之 * 后:这种声明方法可以巧妙的实现C语言里的数组扩展,比将reve

Java中已经数组类型,为什么还要提供集合?

数组的优点: 数组的效率高于集合类 数组能存放基本数据类型和对象:集合中只能放对象 数组的缺点: 不是面向对象的,存在明显的缺陷 数组长度固定且无法动态改变:集合类容量动态改变 数组无法判断其中实际存了多少元素,只能通过length属性获取数组的申明的长度 数组存储的特点是顺序的连续内存:集合的数据结构更丰富 JDK 提供集合的意义: 集合以类的形式存在,符合面向对象,通过简单的方法和属性调用可实现各种复杂操作 集合有多种数据结构,不同类型的集合可适用于不同场合 弥补了数组的一些缺点,比数组更灵

Java 中判断char 是否为空格 和空

//判断是否char是否为空import java.util.*; public class test{ public static void main(String[] args){ String str="abc abc"; char [] ch=str.toCharArray(); for(int i=0;i<ch.length;i++) { if(Character.isSpace(ch[i])) System.out.println("ok"); }

返回零长度的数组或者集合,而不是null——Effective Java 读书笔记

/** * 返回零长度的数组或者集合,而不是null * * @author 刘向峰 * */ public class Shop { private List<Object> objectList; // 零长度数组常量被传递给toArray方法,以指明所期望的返回类型 private final static Object[] EMPTY_OBJECT_ARRAY = new Object[0]; public Shop(List<Object> objectList) { s

java中return与finally的执行顺序

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);