Java三元运算符:应检查条件或!条件?

时间:2017-05-04 07:26:56

标签: java ternary-operator conventions

这可能听起来像一个愚蠢的问题,但是当涉及到检查非null(非条件)或检查null(条件)时,是否存在使用三元运算分配值的约定?

例如,从这个角度来看,下面哪一个更有意义?

List<A> aList = something != null ? something : new ArrayList<>();

List<A> aList = something == null ? new ArrayList<>() : something;

两者都做好了工作,我很好奇,但是如果它们之间存在潜在的差异。

谢谢!

3 个答案:

答案 0 :(得分:3)

两者之间没有实际区别,据我所知,也没有任何惯例。我更喜欢&#34; == null&#34;但是,因为否定使用更令人难以置信。

答案 1 :(得分:3)

正如已经说过的那样。这两种选择没有区别,基本上是可读性或品味。

但是,在检查null的特殊情况下,您可能需要查看Java8的Optional。如果使用得当,这非常适合使用并提高可读性。

Optional<List<A>> optList = Optional.ofNullable(something);

答案 2 :(得分:1)

两者之间没有性能差异。

为了便于阅读,我更喜欢第一个,因为它更直观。

  • 第一个说:如果something不是aList,则将something的值分配给null,否则为empty list

  • 第二个说:检查something是否为空。如果是null,请将empty list分配给aList,其他明智的something