以下代码,
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不允许您比较
int
和Object
,而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接受错误的二进制比较操作