首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Java

Java 方法的返回值到底用基本类型好还是包装类型好

  •  2
     
  •   ohyeahhh · 25 天前 · 2830 次点击

    最近一直有这个疑问,百度也搜了,找不到满意的答案,所以来问问神通广大的 V 友们

    32 回复  |  直到 2019-05-30 18:51:43 +08:00
        1
    HongJay   25 天前
    基本类型吧
        2
    lofbat   25 天前 via iPhone
    个人觉得对象类型更灵活,看下面有没有高见
        3
    NeinChn   25 天前   ♥ 6
    如果不需要区分 0 和 null,那就基本类型
    不然就统一用包装类型
        4
    HuasLeung   25 天前
    包装类吧,能涵盖返回为 null 的情况
        5
    cxtrinityy   25 天前 via Android   ♥ 2
    这难道不是看需要的么?一般返回基本类型就够了,毕竟只要一个值,创建对象也是要开销的
        6
    ohyeahhh   25 天前
    个人感觉是不是 如果方法返回值可能会做比较时用包装类型,如果只是单纯的用一下,就直接用基本类型就可以了
        7
    lhx2008   25 天前   ♥ 1
    如果有可能返回 null,用 Optional 包装
    如果不会返回 null,用基本类型就行,向标准库看齐
        8
    Luckyray   25 天前   ♥ 1
    包装类,不然会有默认值的问题。
        9
    ohyeahhh   25 天前
    @lhx2008 感觉这样的话好像就把包装类型的特性给抛弃了
        10
    Takamine   25 天前
    看业务吧,但是推荐包装类,对于具体的返回 NPE 等给调用者去保证。
        11
    szq8014   25 天前
    取决于习惯吧,我个人是用基本类型的
        12
    lhx2008   25 天前 via Android
    @ohyeahhh 有啥特性,Optinnal 也是包装类呀,Optinal<Interger>
        13
    bxb100   25 天前 via Android
    你想优化的话就用基本类型,一般使用包装类型
        14
    reeco   25 天前 via Android
    全部用包装类型
        15
    zisway   25 天前
    对外接口返回值用包装类型,内部私有的基本类型就可以了。
        16
    micean   25 天前
    基本类型能显著的告诉调用者不必做非空检查,如果有这个必要的话
    否则以减少拆装包为优先
        17
    ChanKc   25 天前
    Effective Java Item 61: Prefer primitive types to boxed primitives

    包装类型效率低而且容易产生 NPE,实际上就是把 NPE 甩锅给调用者。负责任的程序员都会用基本类型,即便用包装类型也应该写好 javadoc。
        18
    zxcjqyy   25 天前
    看情况灵活应用呀
        19
    johnniang   25 天前 via Android
    如果有业务需求,建议用 Optional<Type>;
    如果很纯粹,那就返回基本类型即可。
        20
    rockyou12   25 天前
    能用基本类型绝不要用包装类,我清楚很多用包装类型是应为数据库默认值一般为 null。但用包装类型生产环境的空指针异常会让你想死(特别是 java 的自动装箱、拆箱,你写的时候根本不会考虑数据是不是 null 的)。这点 kotlin 有?来保证安全,真的好太多
        21
    nkduqi   25 天前
    如果是对外的接口,一般不适用基本类型,都使用包装类型;
    如果是应用内部自己用,则可以使用基本类型;
        22
    guyeu   25 天前
    1. 优先项目内部代码规范;
    2. 如果你的方法设计上不会返回 null,请使用基本类型;
    3. 如果你的方法设计上会返回 null,使用 Optional 包装,在语义上告诉使用者返回值有可能为空;
        23
    enaxm   25 天前
    对内你随意,不过我一般用包装类型,想到之前有个同事问我 int 能不能返回 null,我都不知道怎么吐槽。。。

    系统内部一般有共有的工程打成 jar 包,常见的错误类型、宏定义等等,maven 里头连着 nexus,maven 中引入这个包

    对外一般不返回一个当然包装
        24
    c4f36e5766583218   25 天前
    boolean,其它包装?
        25
    cuzfinal   25 天前
    用基本对象,减少装箱
        26
    alittlefun   25 天前 via Android
    参考 api 返回类型
        27
    oneisall8955   25 天前 via Android
    看需求~假如纯属自己做接口,爱咋用就咋用,写清楚返回是什么含义就行了
        28
    sagaxu   25 天前 via Android
    java 标准库都是返回基本类型,Java 标准制定者们,应该比较懂 Java 吧

    如果同事都是菜鸡,还是建议装箱类型,他们需要
        29
    BlackZhu   25 天前
    请教一下 我想返回一条数据 不创建实体的话 难道装在 map 里面返回吗?
        30
    BlackZhu   25 天前
    如果返回实体的话会有很多空字段 但是给每个方法写不同的 dto 又太繁琐了 各位是如何处理的?
        31
    nekoneko   25 天前
    @BlackZhu 反 Object
        32
    lazyfighter   16 天前
    包装类,null 跟 0 有可能两个含义
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2181 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 03:03 · PVG 11:03 · LAX 20:03 · JFK 23:03
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1