[java] ‘+’연산자는 개체 및 문자열에 적용 할 수 없습니다

다음 코드 :

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. 복합 할당 연산자 상태 :

형태의 복합 대입 식을 E1 op= E2동등 E1 = (T) ((E1) op (E2))여기서 T의 타입 E1즉 제외 E1한번만 평가된다.

이 문장은 Java 6 에서 Java 14 와 동일하며 Java 가 시작된 이후로 변경되지 않았을 것입니다.

그래서 value += suffix같은value = (Object) (value + suffix)

Java 6 컴파일러는 해당 명령문을 컴파일하지 못했습니다.


답변