간단 실수
Java 인터페이스 구현 시, 오버라이드 했는데도, 안됐다는 컴파일 에러 - The method 메서드() of type new 클래스(){} must override or implement a supertype method
sshyuny
2022. 11. 11. 09:14
1. 상황
시큐리티 강의를 듣던 중 인터페이스를 구현하는 부분이 있었다. 강사님(정수원님의 스프링 시큐리티. 아래 코드도 강의의 일부 내용입니다.)의 코드대로 동일하게 했는데도 메서드를 오버라이드하지 않았다는 컴파일 에러가 발생했다. VSCode도 다시 깔고, setting.json도 수정하고, 자바 홈 설정도 보고 이것저것 다 했는데도 에러는 없어질 생각을 안했다.ㅜㅜ

2. 에러
- 메서드 부분
The method 메서드() of type new 클래스(){} must override or implement a supertype method

- 클래스명 부분
The type new 클래스(){} must implement the inherited abstract method 상위인터페이스.메서드()

3. 원인
원인은 메서드의 매개 변수로 들어가는 AuthenticationException가 인터페이스의 AuthenticationException 매개변수와 다른 클래스였기 때문이었다.
- 인터페이스 매개변수 org.springframework.security.core.AuthenticationException
- 내가 사용했던 매개변수 javax.naming.AuthenticationException
원인을 알고나니 허무했지만, 매개 변수가 달라 다른 메서드로 인식하는 자바의 특징을 뼈저리게 배운 것으로 생각하기로 했다....