프로그래밍/JAVA 2016. 9. 23. 10:18
얼마전에 우연하게 IDE(이클립스) 기능을 사용하다가 발견한 의문점에 대한 해답이다
서비스 로직을 만들기 위하여 인터페이스 (interface) 를 작성하고
pubblic interface programService {
public List getProgramList() {
}
}
해당 소스를 작성하고 impl 에다가 자동완성 기능을 사용하기 위해서 getProgramList() 를 자동완성 시켰는데
public class programServiceImpl implements programService {
@Override
public List getProgramList() {
// 자동완성
}
}
응? 왜 @Override 가 생겼지? 의문점이 생겼다
물론 생겨도 코드를 작동시키는데 아무런 문제가 없고, 이 @Override 문을 삭제하여도 아무런 문제가 없다
그런데 어째서..이런 의미없는 코드를 IDE에서 지원해 주었을까 의문이 생겨 우리들의 신 구글님께 질문해보았다
스택오버플로우 사이트의 답변을 종합하면 이렇다
- 당신이 작성한 것은 추상화 ( interface ) 클래스이다
- 추후에 당신이 추상화 클래스를 변경하거나 메소드를 삭제할 경우
- 당신에게 impl 의 소스가 연결되어 있어 당신이 이것도 같이 수정해야한다고 알려줄 수 있다는 것이다
- 즉 이것은 미묘하게 발생할 수 있는 버그를 컴파일러 단계에서 알아차리게 해준다
가장 중요한 것이다 [ 미묘하게 발생할 수 있는 버그를 컴파일러 단계에서 수정할 수 있도록 도와준다 ]
출처 : http://egloos.zum.com/nestofeagle/v/1805492
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 자바 기본 API - Class Class (0) | 2016.09.23 |
---|---|
Forward와 Include의 차이점 (0) | 2016.09.23 |
Spring - Ioc & DI (0) | 2016.09.23 |
StringUtils (0) | 2016.09.23 |
Java Collection Framework (JCF) (0) | 2016.09.23 |