最近一直有这个疑问,百度也搜了,找不到满意的答案,所以来问问神通广大的 V 友们
![]() | 1 HongJay 2019-05-21 11:30:43 +08:00 基本类型吧 |
2 lofbat 2019-05-21 11:34:14 +08:00 via iPhone 个人觉得对象类型更灵活,看下面有没有高见 |
![]() | 3 NeinChn 2019-05-21 11:34:26 +08:00 ![]() 如果不需要区分 0 和 null,那就基本类型 不然就统一用包装类型 |
![]() | 4 BCy66drFCvk1Ou87 2019-05-21 11:37:11 +08:00 包装类吧,能涵盖返回为 null 的情况 |
5 cxtrinityy 2019-05-21 11:39:53 +08:00 via Android ![]() 这难道不是看需要的么?一般返回基本类型就够了,毕竟只要一个值,创建对象也是要开销的 |
![]() | 6 ohyeahhh OP 个人感觉是不是 如果方法返回值可能会做比较时用包装类型,如果只是单纯的用一下,就直接用基本类型就可以了 |
![]() | 7 lhx2008 2019-05-21 11:42:22 +08:00 ![]() 如果有可能返回 null,用 Optional 包装 如果不会返回 null,用基本类型就行,向标准库看齐 |
![]() | 8 Luckyray 2019-05-21 11:45:33 +08:00 ![]() 包装类,不然会有默认值的问题。 |
![]() | 10 Takamine 2019-05-21 11:46:40 +08:00 看业务吧,但是推荐包装类,对于具体的返回 NPE 等给调用者去保证。 |
![]() | 11 szq8014 2019-05-21 11:52:21 +08:00 取决于习惯吧,我个人是用基本类型的 |
![]() | 13 bxb100 2019-05-21 11:57:32 +08:00 via Android 你想优化的话就用基本类型,一般使用包装类型 |
![]() | 14 reeco 2019-05-21 11:59:18 +08:00 via Android 全部用包装类型 |
15 zisway 2019-05-21 2:19:26 +08:00 对外接口返回值用包装类型,内部私有的基本类型就可以了。 |
16 micean 2019-05-21 12:31:44 +08:00 基本类型能显著的告诉调用者不必做非空检查,如果有这个必要的话 否则以减少拆装包为优先 |
17 ChanKc 2019-05-21 12:42:03 +08:00 Effective Java Item 61: Prefer primitive types to boxed primitives 包装类型效率低而且容易产生 NPE,实际上就是把 NPE 甩锅给调用者。负责任的程序员都会用基本类型,即便用包装类型也应该写好 javadoc。 |
![]() | 18 zxcjqyy 2019-05-21 12:42:18 +08:00 看情况灵活应用呀 |
19 johnniang 2019-05-21 12:47:26 +08:00 via Android 如果有业务需求,建议用 Optional<Type>; 如果很纯粹,那就返回基本类型即可。 |
![]() | 20 rockyou12 2019-05-21 12:53:00 +08:00 能用基本类型绝不要用包装类,我清楚很多用包装类型是应为数据库默认值一般为 null。但用包装类型生产环境的空指针异常会让你想死(特别是 java 的自动装箱、拆箱,你写的时候根本不会考虑数据是不是 null 的)。这点 kotlin 有?来保证安全,真的好太多 |
![]() | 21 nkduqi 2019-05-21 13:10:17 +08:00 如果是对外的接口,一般不适用基本类型,都使用包装类型; 如果是应用内部自己用,则可以使用基本类型; |
![]() | 22 guyeu 2019-05-21 14:14:38 +08:00 1. 优先项目内部代码规范; 2. 如果你的方法设计上不会返回 null,请使用基本类型; 3. 如果你的方法设计上会返回 null,使用 Optional 包装,在语义上告诉使用者返回值有可能为空; |
![]() | 23 enaxm 2019-05-21 14:20:00 +08:00 对内你随意,不过我一般用包装类型,想到之前有个同事问我 int 能不能返回 null,我都不知道怎么吐槽。。。 系统内部一般有共有的工程打成 jar 包,常见的错误类型、宏定义等等,maven 里头连着 nexus,maven 中引入这个包 对外一般不返回一个当然包装 |
![]() | 24 c4f36e5766583218 2019-05-21 14:40:26 +08:00 boolean,其它包装? |
![]() | 25 cuzfinal 2019-05-21 17:25:29 +08:00 用基本对象,减少装箱 |
![]() | 26 alittlefun 2019-05-21 18:40:13 +08:00 via Android 参考 api 返回类型 |
![]() | 27 itechify PRO 看需求~假如纯属自己做接口,爱咋用就咋用,写清楚返回是什么含义就行了 |
![]() | 28 sagaxu 2019-05-21 21:52:58 +08:00 via Android java 标准库都是返回基本类型,Java 标准制定者们,应该比较懂 Java 吧 如果同事都是菜鸡,还是建议装箱类型,他们需要 |
29 BlackZhu 2019-05-22 10:50:31 +08:00 请教一下 我想返回一条数据 不创建实体的话 难道装在 map 里面返回吗? |
30 BlackZhu 2019-05-22 10:55:18 +08:00 如果返回实体的话会有很多空字段 但是给每个方法写不同的 dto 又太繁琐了 各位是如何处理的? |
32 lazyfighter 2019-05-30 18:51:43 +08:00 包装类,null 跟 0 有可能两个含义 |