返回零长度的数组或者集合,而不是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) {
        super();
        this.objectList = objectList;
    }

    /**
     * 
     * @return an array containing all of the object in the shop
     */
    public Object[] getObjects() {
        // 如果集合是空的,他将使用零长度的输入数组-->否则,这种做法永远不会分配零长度的数组
        return objectList.toArray(EMPTY_OBJECT_ARRAY);
    }

    /**
     * 
     * @return a copy of collection
     */
    public List<Object> getStringList() {
        if (objectList.isEmpty()) {
            return Collections.emptyList();
        } else {
            return new ArrayList<Object>(objectList);
        }
    }

    /**
     * 测试方法
     * 
     * @param args
     */
    public static void main(String[] args) {
        List<Object> newObjectList = Collections.emptyList();
        // newObjectList = new ArrayList<Object>();
        Object object = new Object();
        // newObjectList.add(object);
        Shop shop = new Shop(newObjectList);
        // 不需要判断shop.getObjects()的值是否为空
        if (Arrays.asList(shop.getObjects()).contains(object)) {
            System.out.println("jolly good, just the thing");
        }
    }
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。