내 응용 프로그램이 확장되면서 새 훅 메소드를 도입 한 종속성과 내 응용 프로그램의 호환성을 보장해야합니다. 새롭게 추가 된 메소드를 소개하는 직접적인 접근법 (선언 된 이전 버전에 의해 무시되고 새로운 메소드에 의해 사용됨)은 선언 된 유형의 부속 유형 인 리턴 유형을 정의하자마자 작동을 멈췄습니다.재정의 된 Java 메소드가 존재하더라도 호출되지 않음
오버 헤드 된 메서드를 직접 foo.bar("")
으로 호출하면 수퍼 클래스 메서드가 호출됩니다. 그러나 디버거에서 반사를 통해 호출 할 때 foo.getClass().getMethod("bar", String.class).invoke(foo, "")
, 예상대로 오버라이드 된 메서드를 호출합니다. 이 메소드는 반환 유형이 동일한 유형으로 좁혀지면 올바르게 호출됩니다. 반환되는 메소드는 이전에 하위 유형이었습니다.