文档章节

第七章:方法。ITEM43:返回零长度的数组或者集合,而不是null 。

t
 twoslow
发布于 2014/09/04 15:03
字数 139
阅读 6
收藏 0
 1 private final List<String> l = ... ;
 2         
 3         public String[] getString() {
 4             if(l.size() == 0)
 5                 return null ;
 6         }
 7         
 8         String[] s = getString();
 9                 //对于一个返回null而不是零长度数组或者集合的方法,每次都要判断!=null
10         if(s != null && Arrays.asList(s).contains("a")){
11             //dosomething
12         }
1 private final List<String> l = ... ;
2         
3         public static final String[] EMPTY_STRING_ARRAY = new String[0] ;
4         public String[] getString() {
5                 return l.toArray(EMPTY_STRING_ARRAY) ;
6         }
1 //返回list的情况
2 public List<String> getString() {
3             if(l.isEmpty())
4                 return Collections.emptyList() ;
5             else
6                 return new ArrayList<String>(l) ;
7         }

 

© 著作权归作者所有

t
粉丝 0
博文 15
码字总数 6644
作品 0
南开
私信 提问
Effective Java 第三版——54. 返回空的数组或集合不要返回null

Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所以JDK 最好下载 JDK 9以上的版本。 54. Effective ...

M104
03/10
0
0
【07】Effective Java - 方法

1、检查参数的有效性 (1)防卫式校验 在方法开头校验入参的合法性 /** * @param start the beginning of the period * @param end the end of the period; must not precede start * @throw......

xixicat
2014/07/11
122
0
Effective_Java_Index

基于《Effective Java 第三版》的读书笔记 创建和销毁对象 第1条:用静态工厂方法代替构造器 第2条:遇到多个构造参数时要考虑用构建器 第3条:用私有构造器或者枚举类型强化Singleton属性 ...

添仔哥哥
2017/08/26
39
0
php--------删除数组的第一个元素和最后一个元素

对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 arraypop 和 arrayshift 来完成,下面就具体介绍一下如何来操作。 (1)使用 ar...

切切歆语
2018/01/19
25
0
HashMap源码理解

private static int roundUpToPowerOf2(int number) { return number >= MAXIMUM_CAPACITY ? MAXIMUM_CAPACITY : (number > 1) ? Integer.highestOneBit((number - 1) << 1) : 1;} Integer.h......

清尘V
2016/04/16
291
0

没有更多内容

加载失败,请刷新页面

加载更多

川普给埃尔多安和内堪尼亚胡的信

任性 https://twitter.com/netanyahu/status/1186647558401253377 https://edition.cnn.com/2019/10/16/politics/trump-erdogan-letter/index.htm...

Iridium
4分钟前
2
0
golang-mysql-原生

db.go package mainimport ("database/sql""time"_ "github.com/go-sql-driver/mysql")var (db *sql.DBdsn = "root:123456@tcp(127.0.0.1:3306)/test?charset=u......

李琼涛
33分钟前
2
0
编程作业20191021092341

1编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时 间。使用#define或const创建一个表示60的符号常量或const变量。通过while 循环让用户重复输入值,直到用户输入小于或等于0的值...

1李嘉焘1
33分钟前
4
0
Netty整合Protobuffer

现在我们都知道,rpc的三要素:IO模型,线程模型,然后就是数据交互模型,即我们说的序列化和反序列化,现在我们来看一下压缩比率最大的二进制序列化方式——Protobuffer,而且该方式是可以跨...

算法之名
38分钟前
18
0
如何用C++实现栈

栈的定义 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压...

BWH_Steven
57分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部