【问题标题】:Using equals method in the conditional expression [duplicate]在条件表达式中使用equals方法[重复]
【发布时间】:2013-09-06 05:57:31
【问题描述】:

为什么这个条件语句不起作用? o1 和 o2 是两个不同的对象。

o1.equals(o2) ? System.out.println("Objects are equal"): System.out.println("Objects are not equal");

【问题讨论】:

  • “不工作”?你如何定义“工作”? o1 和 o2 是什么类型的对象?他们的 equal 方法是如何实现的?
  • 虽然o1o2 可能是不同的实例,但它们在逻辑上可能相等
  • @jontejj: o1 和 o2 是 Obj 类的对象,带有一个整数实例变量,equals 方法已被覆盖以检查整数实例变量的相等性

标签: java conditional equals


【解决方案1】:

这称为ternary operator。里面不能有语句。

但你可以有表达式。

String output = o1.equals(o2) ? "Objects are equal":"Objects are not equal";

【讨论】:

    【解决方案2】:

    试试这个,conditional Operator

    System.out.println((o1.equals(o2) ? "Objects are equal": "Objects are not equal"));
    

    因为你的代码不是语句。

    【讨论】:

      【解决方案3】:

      尝试以这种方式替换您的代码

      System.out.println((o1.equals(o2) ? "Objects are equal" : "Objects are not equal"));
      

      【讨论】:

        【解决方案4】:

        来自 Java 语言规范,在“条件运算符”下 -

        第二个或第三个操作数表达式调用 void 方法是编译时错误。

        由于println 是一个 void 方法,因此您的第二个和第三个操作数表达式符合此标准。至于为什么会这样工作——这就是 Java 的定义方式。

        【讨论】:

          【解决方案5】:

          试试这个就行了

          System.out.println(o1.equals(o2) ? "Objects are equal": "Objects are not equal");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-07
            • 1970-01-01
            • 1970-01-01
            • 2020-05-28
            • 1970-01-01
            • 2012-06-02
            • 1970-01-01
            • 2015-02-25
            相关资源
            最近更新 更多