以下代码,

private boolean compare(Object a, int b) {
    return a == b;
}

在Java 7中编译,但在Java 8中导致以下错误:



看下面的问题:

Comparing Object and int in Java 7

似乎Java 6和Java 8不允许您比较intObject,而7却可以。是否有任何文档?

我对有助于做出这些决定的背景知识感兴趣。似乎他们还不确定。

我在JDK 1.7.0.51中使用IntelliJ IDEA 14.1.4。

最佳答案

Java 7将自动装箱应用于int。

 private boolean compare(java.lang.Object, int);
   Code:
      0: aload_1
      1: iload_2
      2: invokestatic  #2       // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      5: if_acmpne     12
      8: iconst_1
      9: goto          13
     12: iconst_0
     13: ireturn

我用build 1.7.0_71-b14创建了这个

编辑:

Oracle将此行为识别为错误:
JDK-8013357:Javac接受错误的二进制比较操作

10-06 13:08
查看更多