加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

三元对比如果在Java中

发布时间:2020-12-15 04:27:43 所属栏目:Java 来源:网络整理
导读:为什么使用这样的三元组是不正确的,因为使用if是正确的? //Error when using as ternaryCharacter.isDigit(myDto.getNameStr().charAt(0)) ? digitArrayList.add(myDto) : charArrayList.add(myDto);//OK when used as if ... elsechar c = myDto.getNameSt
为什么使用这样的三元组是不正确的,因为使用if是正确的?

//Error when using as ternary
Character.isDigit(myDto.getNameStr().charAt(0)) ? digitArrayList.add(myDto) : charArrayList.add(myDto);

//OK when used as if ... else
char c = myDto.getNameStr().charAt(0);
if(Character.isDigit(c)) {
  digitArrayList.add(myDto);
} else {
  charArrayList.add(myDto);
}

解决方法

三元条件不允许作为独立语句.只允许某些表达式作为独立语句,如赋值或方法调用.

JLS将允许作为独立语句的表达式分类为StatementExpression

Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression

无论如何,有几种不明确的方法可以在这里使用三元组:

// statement is an assignment
boolean ignored =
    Character.isDigit(...) ?
        digitArrayList.add(myDto) : charArrayList.add(myDto);

// statement is a method invocation
(Character.isDigit(...) ? digitArrayList : charArrayList)
    .add(myDto);

但我不建议使用它们,它们只是一种好奇心.更简单的是使用if … else.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读