Java 6에서 @Override
이 애노테이션은 Java 5에 추가된 것입니다. 아시죠?
상속받은 메소드를 재정의 했는지 표현하기 위해서 사용하며 컴파일 할 때 진짜로 해당 메소드가 상위 클래스의 메소드를 오버라이딩 하고 있는 것인지 확인해서, 만약 그렇치 않다면(메소드 시그너처가 다른 경우) 에러 메시지를 보여줍니다.
그런데, Java 6에서는 인터페이스를 구현한 메소드에도 붙여 줄 수 있습니다. Eclipse 3.3에서 Java 6를 무심코 사용하고 계셨다면 어느날 다음과 같은 이상한 에러를 볼 수도 있습니다.
sayGreeting은 인터페이스를 구현하는 메소드 입니다. 애노테이션을 없애거나 Super type에 이 메소드를 정의하라고 합니다. 내참.. 왜이러지? 인터페이스 구현한 건데 왜 @Override를 붙여놨지? 라고 생각하고 없애지 말고 다시 한번 위의 단락에 제가 적어 둔 것을 읽으시기 바랍니다. Java 6에서는 이상한 일이 아닙니다.
프로젝트가 사용하고 있는 JDK 버전을 살펴봤습니다.6.0이자네.. 근데 왜이러는 거야..
아차!.. 저것은 그냥 참조하는 라이브러리를 보여주고 있을뿐. 실제 컴파일러는 아니잖은가..
프로젝트를 선택한 상태에서 "Alt + 엔터" 클릭하고 왼쪽 메뉴에서 Java Compiler를 선택합니다.이런..컴파일 레벨이 5.0이였네요. 6.0으로 바꿔주면 에러는 사라집니다. peace~