大佬们判断对象为 null 是怎么判断的呢?

2020-09-07 11:28:30 +08:00
 fordawn

直接使用 != null 还是用 Objects.nonNull 呢

感觉好像用 Objects 更加对象化

大佬们一般杂用呢

7708 次点击
所在节点    Java
39 条回复
fordawn
2020-09-07 16:07:10 +08:00
@WngShhng 去看了下 kotlin,区分可空和不可空思路确实先进,代码优化也方便很多
xiaoliu926
2020-09-07 16:18:09 +08:00
kotlin ?.
clf
2020-09-07 16:37:24 +08:00
外部传入的直接在方法上用 NonNull 注解……

方法内部判断,一般用!= null

当然,自己写的一些经常可能为 null 或使用时需要判断为 null 的方法,我会用 Optional 封装(很少)。
return Optional.ofNullable(xxx);

返回的 opt 对象的后续操作封装过方法的话,就直接:
opt.ifPresent(doSome);

为 null 的时候如果需要抛出业务异常:
opt.orElseThrow(Exception)
googoehl
2020-09-07 16:40:01 +08:00
7 楼开发小技巧 可以

直接 .nn 快捷生成判空代码
googoehl
2020-09-07 16:43:27 +08:00
idea 中类似的后缀补全技巧 .nn

还可以参考这个 https://blog.csdn.net/qq_28524127/article/details/88743156
PiersSoCool
2020-09-07 17:16:47 +08:00
一般都用 Optional 处理可能非空值,因为一般不止一层,都是 a.b.c.d 。这么做省的哪里忘了判断 npe 了。
newmlp
2020-09-07 19:44:19 +08:00
if (!ptr) {}
bjking2014
2020-09-07 21:21:19 +08:00
@chendy 还有其他的技巧吗,有没有关键字可以查
crayygy
2020-09-07 22:52:57 +08:00
@bjking2014 #28 这个一般叫 postfix completion, 可以在这里查到 https://www.jetbrains.com/help/idea/settings-postfix-completion.html

Android Studio/Idea 还可以自己去配置 completion,以前写 Java 的时候自己配置了很多的快捷方式,后来写了一年多的 Kotlin 全扔了...
yeqizhang
2020-09-07 23:03:39 +08:00
判断为 null 当然是 null == xxxx 哈哈哈
chendy
2020-09-07 23:16:10 +08:00
@bjking2014 各种地方.一下从后往前翻就都看到了,常用的语法结构基本都有对应的
早年和 live template 在一起,现在好像单独拆了,我只会用不会自己写。。。
.not .if .while
.var .return .null .nn .new
遍历的 .for .fori .forr
加括号 .par ,强转 .cast
异常的 .try .twr
还有一些不是 postfix 的,像 psvm sout ( eclipse 是 syso ) thr fori 很多很多。。。
admin7785
2020-09-07 23:32:00 +08:00
requireNonNull
ychost
2020-09-08 09:27:54 +08:00
Optional.ofNullable(xx).filter(...).map(...)...orElse(null)
no1xsyzy
2020-09-08 15:28:19 +08:00
@crayygy 论吹 Kotlin 的技巧
chenny3
2020-09-08 21:38:29 +08:00
Objects.nonNull
fordawn
2020-09-15 11:20:33 +08:00
@yeqizhang 这是 C 留下来的写法嘛?
fordawn
2020-09-15 11:22:44 +08:00
@PiersSoCool 有道理,不过 optional 写起来就是感觉好长,但是按意义来说,optional 确实合适
PiersSoCool
2020-09-15 14:39:47 +08:00
@fordawn 其实我也不愿意这么写,但总是有 xx 的客户、调用者等等会以一种奇怪的方式访问你的代码,为了避免 bug 不得不这么写。以前说好的必须传这个参数,我信了,结果出问题了我背锅;现在说必须传这个参数我就呵呵了,我全都给你判断做异常处理
fordawn
2020-10-07 12:07:09 +08:00
@PiersSoCool 说的是,尤其是对接三方的时候,文档写的啥都有,结果不一定哪个是空的,深有体会

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

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

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

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

© 2021 V2EX