java가 수정 자 대신 @Override 어노테이션을 사용하는 이유는 무엇입니까? toString() {

@Override새로운 override수정자를 작성하는 대신 Java가 주석 을 사용하는 동기는 무엇입니까 ?

@Override
public String toString() {
   return "";
}

vs.

public override String toString() {
   return "";
}


답변

@Override는 원래 언어가 아닙니다. 추가해야 할 필요성이 느껴지면 언어에 새 키워드를 추가하는 것보다 일반적인 메커니즘 (주석)을 사용하는 것이 더 쉬웠습니다. 새 키워드를 추가하면 해당 단어를 식별자로 사용하는 프로그램이 중단 될 수 있으므로 항상 호환되지 않는 변경 사항입니다.

첫날부터 재정의 마커를 추가하는 언어에서는 키워드 (예 : Kotlin 및 Scala) 인 경우가 많으며, Java에서는 재정의 마커가없는 이전 Java 버전과 하위 호환성을 유지해야했습니다.


답변

당신은 필요하지 않습니다 실제로 동작을 재정의하기 @Override 주석 이 . 단순히 메서드 자체를 변경하지 않고 컴파일러에 대한 메서드 의도의 컨텍스트를 추가하기 때문에 주석입니다.

주석이 없으면 기능을 재정의 하려고 있지만 실수로 약간 다르게 서명하면 실패합니다. 주석을 추가하면이 메서드가 실제로 동작을 재정의하지 않는 경우 오류를 생성하도록 컴파일러에 지시합니다.

따라서 주석으로 완벽하게 이해됩니다.