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”复杂一步。。。但另一方面是使用=代码>允许您将默认值放在第二位,这更符合我的直觉。但基本上,你知道。除了作为一个团队,你可以同意你认为必要的任何约定之外,你不知道任何约定。