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,否则新建一个对象。

  • 相关阅读:
    对弈类游戏的人工智能(5)--2048游戏AI的解读
    对弈类游戏的人工智能(4)--游戏AI的落地
    对弈类游戏的人工智能(3)--博弈树优化
    对弈类游戏的人工智能(2)--学习算法
    java.awt.headless 模式
    SpringBoot启动过程分析
    SpringBoot入门之内嵌Tomcat配置
    git tag的用法
    SpringBoot程序远程debug
    SpringBoot入门之分散配置
  • 原文地址:https://www.cnblogs.com/zhandouBlog/p/10146852.html
Copyright © 2011-2022 走看看