
直接使用 != 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 null != obj |
6 havemail 2020-09-07 11:38:50 +08:00 现在 Objects 现在用的比较多 |
7 chendy 2020-09-07 11:39:57 +08:00 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 c# ?. |
13 sheeta 2020-09-07 14:14:25 +08:00 php ?-> |
14 xloger 2020-09-07 14:23:36 +08:00 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 |
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 说的是,尤其是对接三方的时候,文档写的啥都有,结果不一定哪个是空的,深有体会 |