Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163999
  • 博文数量: 46
  • 博客积分: 2981
  • 博客等级: 少校
  • 技术积分: 475
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-01 12:43
文章分类

全部博文(46)

文章存档

2010年(4)

2009年(9)

2008年(33)

我的朋友

分类: Java

2008-06-17 18:35:36

If a method returns an array which can be empty, do not allow it to return null. Instead, return a zero-length array.

This simplifies the client, since they never have to check for null values.

Example

import java.util.*;

public class StockPortfolio {

//..elided

/**
* A field is implemented internally as a Collection,
* but offered to the user of this class as an Array.
* This array is never null, even if the underlying Collection is
* empty.
*/

public String[] getStocks() {
/*
NO_STOCKS plays a double role here. If there are elements in fStocks, then
toArray will allocate a new array, using NO_STOCKS simply as an indicator
of the proper type to use. If fStocks has no elements at all, then toArray
will simply return the NO_STOCKS array itself.
*/

return (String[]) fStocks.toArray(NO_STOCKS);
}

// PRIVATE //

/** The underlying collection. */
private List fStocks;

/** A constant, empty array, to be used instead of a null array. */
private static final String[] NO_STOCKS = new String[0];
}

Another alternative is to use a collection instead of an array, if possible. The class contains these constants, which you may find useful :

  • Collections.EMPTY_LIST
  • Collections.EMPTY_SET
  • Collections.EMPTY_MAP
阅读(715) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~