以下代码:
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 toE1 = (T) ((E1) op (E2))
, whereT
is the type ofE1
, except thatE1
is evaluated only once.
这句话和Java 6一样至 Java 14 ,并且自 Java 开始以来可能从未改变过。
所以
value += suffix
与 value = (Object) (value + suffix)
相同Java 6 编译器不应该无法编译该语句。
关于java - 运算符 '+' 不能应用于对象和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61232244/