zoukankan      html  css  js  c++  java
  • java返回集合为null还是空集合

    个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null。

    那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为null,可以直接用,因为不用抛空指针。

    当然这也有缺点,如果返回Lists.newArrayList();或者new ArrayList();这会新建一个对象,而这个对象很可能是没必要的,这样白白浪费性能。

    解决方法当然也有,可以用Collections.emptyList();这个方法返回一个空集合,并不会新建对象,而是返回

    public static final List EMPTY_LIST = new EmptyList<>(); 

    这个变量。

    当然这也有缺点,如果调用方只是遍历,这没什么不会报错,但是如果要新增,删除里面的元素那就会报错,

    那么你可能想为什么,原因就是代码里直接写死了调用时报错,那么为什么要这样写呢?

    原因也很简单,如果多个线程对这个集合增删,那么调用方就全乱了,所以采用了直接报错,快速失败的方法

    来解决问题。

    总结:

    返回null,返回new ArrayList<>(),返回EMPTY_LIST 。

    null肯定是不推荐的,那么是新建一个List还是返回空List呢?

    这要根据接口的性能要求,如果性能要求高返回EMPTY_LIST,否则新建一个对象。

  • 相关阅读:
    MFC Windows 程序设计>WinMain 简单Windows程序 命令行编译
    AT3949 [AGC022D] Shopping 题解
    CF643D Bearish Fanpages 题解
    CF643C Levels and Regions 题解
    CF241E Flights 题解
    CF671C Ultimate Weirdness of an Array 题解
    CF1592F Alice and Recoloring 题解
    GYM 102452E 题解
    CF494C Helping People 题解
    P5556 圣剑护符
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/10146852.html
Copyright © 2011-2022 走看看