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

Java三元运算符:应检查条件或!条件,java,ternary-operator,conventions,Java,Ternary Operator,Conventions,这听起来可能是一个愚蠢的问题,但在使用三元运算赋值时,当涉及到检查非空(非条件)或检查空(条件)时,是否有约定 例如,从这个角度来看,以下哪项更有意义 List<A> aList = something != null ? something : new ArrayList<>(); List<A> aList = something == null ? new ArrayList<>() : something; List=something

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

例如,从这个角度来看,以下哪项更有意义

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

List<A> aList = something == null ? new ArrayList<>() : something;
List=something!=无效的新的ArrayList();
列表列表=something==null?新ArrayList():某物;
但我很好奇,两者之间是否有潜在的区别


谢谢

两者之间没有实际的区别,而且据我所知,也没有惯例。不过,我更喜欢“==null”,因为否定式通常更难以理解。

三元运算符没有约定,性能也没有任何差异

如前所述。这两个选项之间没有区别,基本上是可读性或品味的问题

但是,在检查
null
的特殊情况下,您可能需要看看Java8的
可选的
。如果使用正确的话,这是非常好用的,并且提高了很多可读性

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

两者之间没有性能差异

对于可读性,我更喜欢第一个,因为它更直观

  • 第一种说法是:如果
    某物
    不是
    null
    ,则将
    某物
    的值分配给
    列表
    ,否则为
    空列表

  • 第二个说:检查
    某物
    是否为空。如果是
    null
    ,则将
    空列表
    分配给
    列表
    ,其他方式为
    某物


我认为两者之间没有任何性能差异。它们都应该归结为结构非常相似的if-else语句。只是口味问题,以基于意见的方式结束。@Mircea-Man,两者都是相同的,你可以创建许多组合来执行相同的操作。没有功能上的差异,我也不知道有什么惯例。我通常更喜欢
=
变量,因为我喜欢使复合行尽可能简单,“notequals”比“equals”复杂一步。。。但另一方面是使用
=允许您将默认值放在第二位,这更符合我的直觉。但基本上,你知道。除了作为一个团队,你可以同意你认为必要的任何约定之外,你不知道任何约定。