运算符“+”不能应用于对象和字符串

Operator '+' cannot be applied to Object and String

以下代码:

void someMethod(Object value)
{
    String suffix = getSuffix();
    if (suffix != null)
        value += suffix;

    [...]
}

在 JDK 8 中编译没有错误(使用 -source 1.6),但在 JDK 6 中编译失败并显示错误消息:

Operator '+' cannot be applied to java.lang.Object and java.lang.String

虽然我明白错误是什么,但为什么用 JDK 8 编译?这在任何地方都有记录吗?

JLS 15.26.2. Compound Assignment Operators 状态:

A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.

这句话与 Java 6 to Java 14 相同,并且自 Java 开始以来可能从未改变过。

因此 value += suffixvalue = (Object) (value + suffix)

相同

Java6 编译器应该不会编译该语句。