2017-05-20 7 views
0

클릭하여 드래그 GUI를 만들려고 우연히 서브 클래스에 Component.move을 덮어 썼습니다. 그럴 경우 Component.setLocation이 호출 될 때마다 스택 오버플로가 발생합니다.Component.move (int, int)는 더 이상 사용되지 않지만 계속 사용됩니다.

내 이동 방법의 이름을 변경 한 후에 발생하지 않았습니다. 내가 move을 덮어 썼고 setLocation에 의해 호출된다는 것을 알았습니다.

그러나 Oracle 설명서에는 move이 오래 전에 사용되지 않았다고 나와 있습니다. 그런데 왜 아직도 setLocation에 의해 사용됩니까? 그렇다고 setLocation이 더 이상 사용되지 않거나 move이 아닙니다.

답변

0

@Deprecated으로 표시된 모든 API는 향후 버전에서 제거된다는 것을 의미합니다. 사용되지 않는 API는 공급 업체가 아닌 고객의 관점에서 나온 것입니다. move 메서드를 나중에 제거하면 공급 업체가 setLocation을 자유롭게 변경할 수 있지만 클라이언트는 new API를 호출하는 코드를 업데이트하지 않고 실행할 수 없습니다.

setLocation@Deprecated으로 주석을다는 것은 향후 jdk에서 아무 것도 변경하지 않고 프로그램을 실행하게되어 기쁘다는 것을 의미합니다.

0

더 이상 사용되지 않는 메서드가 응용 프로그램의 이전 버전과의 호환을 지원하거나이 메서드가 라이브러리의 이후 릴리스에서 제거 될 예정임을 개발자에게 알리기 위해 계속 존재할 수 있습니다.

더 이상 사용되지 않는 메소드 자체는 여전히 완벽하게 작동하며 작동하지만, 동일한 일을하는 다른 방식으로 선호하는 방법이 있음을 나타냅니다.

종종 다른 기능을 사용하는, 더 이상 사용되지 않는 방법을 사용하는 다른 방법은 반드시 사용되지 않을 수도 있습니다. 구현은 오래된 것일 수 있지만 API는 그렇지 않습니다.