질문에 대한 답은 예입니다. 클래스 파일을 대체 할 수는 있지만 다른 종속성이 변경되지 않았다는 점에서 다소 복잡합니다.
예를 들어 컴파일하는 클래스가 다른 클래스에서 사용되는 메서드의 메서드 서명을 변경하는 경우 이러한 클래스를 바꿔야합니다. public, protected 또는 default 메서드의 메서드 시그니처가 변경되지 않는 한 괜찮습니다.
자주 묻는 질문입니다. 자주하는 일인 경우 개별 매개 변수 대신 개체가 종종 메서드로 전달되는 이유를 빨리 알 수 있습니다.
public MyObject getObject(MyObject2 mySecondObject)
대
public MyObject getObject(int a, int b, int c)
당신이 메서드에 전달 객체, 메소드 서명이 변경되지 않습니다,하지만 당신은 추가하거나 방법에 매개 변수를 제거 할 때에 새로운 속성을 추가 할 필요가
서명 자체는 모든 종속성에 대한 연쇄 반응을 생성하므로 해당 클래스 파일도 컴파일하고 교체해야합니다.
마지막으로 강조 할 점은 개인 메서드 나 개인 변수 또는 메서드 정의에 대한 변경 사항이 다른 클래스 파일에 영향을 미치지 않는다는 점입니다. 중요한 것은 입력 및 출력이 항상 동일한 데이터 형식을 사용하고 반환한다는 점에서 메서드가 다른 클래스와 갖는 계약을 유지한다는 것입니다.
이것은 인스턴스 변수의 캡슐화의 중요성과 이러한 종속성을 다른 클래스에서 숨기는 방법을 강조합니다.
메소드 서명을 지적하기위한 +1 – Matsemann
JDK 버전은 어떻습니까? 나는 새 클래스 파일을 교체해야 할 JDK와 동일한 JDK를 사용하여 컴파일해야한다고 생각한다. – Cam
안녕하세요 @ 캠, 당신이 옳다고 거의 확신합니다. 솔직히 기억이 안 나는 자바 클래스 파일을 디 컴파일 한 지 오래되었습니다. ;) – jmort253