直接使用 != null 还是用 Objects.nonNull 呢
感觉好像用 Objects 更加对象化
大佬们一般杂用呢
1
xuanbg 2020-09-07 11:31:02 +08:00
!= null 不挺好的吗
|
2
x66128 2020-09-07 11:31:05 +08:00
在床上看一眼就能判断了
|
3
optional 2020-09-07 11:36:28 +08:00 via iPhone
Objects.isNullO nonNull requireNonNull
|
4
optional 2020-09-07 11:37:29 +08:00 via iPhone
现在好久不用 ==null 要不就是 Optional.ofNullable
|
5
fakeJas0n 2020-09-07 11:37:51 +08:00 1
null != obj
|
6
havemail 2020-09-07 11:38:50 +08:00
现在 Objects 现在用的比较多
|
7
chendy 2020-09-07 11:39:57 +08:00 9
Objects.nonNull 主要还是当 Objects::nonNull 用的多一些
平时的逻辑直接 != null 就好,idea 里 .nn 就出来了 |
9
WngShhng 2020-09-07 11:55:14 +08:00
要说 null,kotlin 的处理方式是真的好
|
10
echooo0 2020-09-07 12:02:39 +08:00
Objects.nonNull
|
11
kingfalse 2020-09-07 12:11:14 +08:00
kotlin ?.
|
12
youyouyou0123456 2020-09-07 13:54:04 +08:00 1
c# ?.
|
13
sheeta 2020-09-07 14:14:25 +08:00
php ?->
|
14
xloger 2020-09-07 14:23:36 +08:00 1
7 楼的方式不错,学到了。我以前用的快捷键是这样的:
ifn 能快速出来 if(xxx == null),inn 能快速出来 if(xxx != null)。 也挺方便的,供参考。 顺带,我也觉得 kotlin 的处理方式最好,现在项目是 Java Kotlin 混编,每次写 Java 需要加各种 if null 就烦躁。 |
15
cheng6563 2020-09-07 14:26:09 +08:00
!=null 就行了
用 Objects 是嫌打字不够多么 |
16
FaXiaoKe 2020-09-07 14:57:04 +08:00
:? 不好用么
|
18
raptium 2020-09-07 15:11:52 +08:00
我就直接用 != null 。
Objects.nonNull 应该在作为方法引用的时候比较有用,比如 foo.stream().filter(Objects::nonNull) 这种。 |
19
hhhsuan 2020-09-07 15:32:05 +08:00
直接用!=null, Objects.nonNull 不是给你干这种事用
|
20
shm7 2020-09-07 16:02:19 +08:00
可以读读实现源码吧。python 就一个 None,用 is not 就行了
|
22
xiaoliu926 2020-09-07 16:18:09 +08:00
kotlin ?.
|
23
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) |
24
googoehl 2020-09-07 16:40:01 +08:00
7 楼开发小技巧 可以
直接 .nn 快捷生成判空代码 |
25
googoehl 2020-09-07 16:43:27 +08:00 1
|
26
PiersSoCool 2020-09-07 17:16:47 +08:00
一般都用 Optional 处理可能非空值,因为一般不止一层,都是 a.b.c.d 。这么做省的哪里忘了判断 npe 了。
|
27
newmlp 2020-09-07 19:44:19 +08:00
if (!ptr) {}
|
28
bjking2014 2020-09-07 21:21:19 +08:00 via Android
@chendy 还有其他的技巧吗,有没有关键字可以查
|
29
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 全扔了... |
30
yeqizhang 2020-09-07 23:03:39 +08:00 via Android
判断为 null 当然是 null == xxxx 哈哈哈
|
31
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 很多很多。。。 |
32
admin7785 2020-09-07 23:32:00 +08:00 via iPhone
requireNonNull
|
33
ychost 2020-09-08 09:27:54 +08:00
Optional.ofNullable(xx).filter(...).map(...)...orElse(null)
|
35
chenny3 2020-09-08 21:38:29 +08:00
Objects.nonNull
|
37
fordawn OP @PiersSoCool 有道理,不过 optional 写起来就是感觉好长,但是按意义来说,optional 确实合适
|
38
PiersSoCool 2020-09-15 14:39:47 +08:00
@fordawn 其实我也不愿意这么写,但总是有 xx 的客户、调用者等等会以一种奇怪的方式访问你的代码,为了避免 bug 不得不这么写。以前说好的必须传这个参数,我信了,结果出问题了我背锅;现在说必须传这个参数我就呵呵了,我全都给你判断做异常处理
|
39
fordawn OP @PiersSoCool 说的是,尤其是对接三方的时候,文档写的啥都有,结果不一定哪个是空的,深有体会
|