Gro*_*uez 11 java javac java-6 java-8
以下代码:
void someMethod(Object value)
{
String suffix = getSuffix();
if (suffix != null)
value += suffix;
[...]
}
Run Code Online (Sandbox Code Playgroud)
在 JDK 8 中编译没有错误(使用 -source 1.6),但在 JDK 6 中失败并显示错误消息:
Operator '+' cannot be applied to java.lang.Object and java.lang.String
Run Code Online (Sandbox Code Playgroud)
虽然我确实理解错误是关于什么的,但为什么使用 JDK 8 进行编译?这在任何地方都有记录吗?
And*_*eas 14
JLS 15.26.2。复合赋值运算符指出:
形式的复合赋值表达式
E1 op= E2等价于E1 = (T) ((E1) op (E2)),其中T是 的类型E1,只是E1只计算一次。
这句话从Java 6到Java 14 都是一样的,并且自 Java 开始以来可能从未改变过。
所以value += suffix是一样的value = (Object) (value + suffix)
Java 6 编译器不应该无法编译该语句。
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |