간단 실수

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

 

원인을 알고나니 허무했지만, 매개 변수가 달라 다른 메서드로 인식하는 자바의 특징을 뼈저리게 배운 것으로 생각하기로 했다....