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

2019-05-21 11:25:41 +08:00
 ohyeahhh

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

6050 次点击
所在节点    Java
32 条回复
HongJay
2019-05-21 11:30:43 +08:00
基本类型吧
lofbat
2019-05-21 11:34:14 +08:00
个人觉得对象类型更灵活,看下面有没有高见
NeinChn
2019-05-21 11:34:26 +08:00
如果不需要区分 0 和 null,那就基本类型
不然就统一用包装类型
BCy66drFCvk1Ou87
2019-05-21 11:37:11 +08:00
包装类吧,能涵盖返回为 null 的情况
cxtrinityy
2019-05-21 11:39:53 +08:00
这难道不是看需要的么?一般返回基本类型就够了,毕竟只要一个值,创建对象也是要开销的
ohyeahhh
2019-05-21 11:41:59 +08:00
个人感觉是不是 如果方法返回值可能会做比较时用包装类型,如果只是单纯的用一下,就直接用基本类型就可以了
lhx2008
2019-05-21 11:42:22 +08:00
如果有可能返回 null,用 Optional 包装
如果不会返回 null,用基本类型就行,向标准库看齐
Luckyray
2019-05-21 11:45:33 +08:00
包装类,不然会有默认值的问题。
ohyeahhh
2019-05-21 11:45:49 +08:00
@lhx2008 感觉这样的话好像就把包装类型的特性给抛弃了
Takamine
2019-05-21 11:46:40 +08:00
看业务吧,但是推荐包装类,对于具体的返回 NPE 等给调用者去保证。
szq8014
2019-05-21 11:52:21 +08:00
取决于习惯吧,我个人是用基本类型的
lhx2008
2019-05-21 11:54:06 +08:00
@ohyeahhh 有啥特性,Optinnal 也是包装类呀,Optinal<Interger>
bxb100
2019-05-21 11:57:32 +08:00
你想优化的话就用基本类型,一般使用包装类型
reeco
2019-05-21 11:59:18 +08:00
全部用包装类型
zisway
2019-05-21 12:19:26 +08:00
对外接口返回值用包装类型,内部私有的基本类型就可以了。
micean
2019-05-21 12:31:44 +08:00
基本类型能显著的告诉调用者不必做非空检查,如果有这个必要的话
否则以减少拆装包为优先
ChanKc
2019-05-21 12:42:03 +08:00
Effective Java Item 61: Prefer primitive types to boxed primitives

包装类型效率低而且容易产生 NPE,实际上就是把 NPE 甩锅给调用者。负责任的程序员都会用基本类型,即便用包装类型也应该写好 javadoc。
zxcjqyy
2019-05-21 12:42:18 +08:00
看情况灵活应用呀
johnniang
2019-05-21 12:47:26 +08:00
如果有业务需求,建议用 Optional<Type>;
如果很纯粹,那就返回基本类型即可。
rockyou12
2019-05-21 12:53:00 +08:00
能用基本类型绝不要用包装类,我清楚很多用包装类型是应为数据库默认值一般为 null。但用包装类型生产环境的空指针异常会让你想死(特别是 java 的自动装箱、拆箱,你写的时候根本不会考虑数据是不是 null 的)。这点 kotlin 有?来保证安全,真的好太多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/566134

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX