내가 몇 가지 클래스가있는 경우 : 나는 그것을에 대한 코드를 내장 한 바이너리 및 다른 사람으로이 컴파일 한 경우반환 유형을 엄격한 하위 유형으로 변경하고 이진 호환성을 유지할 수 있습니까?
import java.util.Date;
public final class Foo {
private Date date;
public Date getDate(){ return date; }
}
, I 이후 이진 호환성을 깨지 않고이 작업을 수행 할 수 있습니다? java.sql.Date
이 java.util.Date
의 서브 클래스입니다
import java.sql.Date;
public final class Foo {
private Date date;
public Date getDate(){ return date; }
}
참고.
그것은 내가 최종 클래스를 선언하지 않았다면, 내가 그에게 분명한 것 같다, 나는이 깨진 것 소스 호환성 (즉, 누군가가 이전에 내 라이브러리에 대해 java.util.Date
를 반환하는 getDate
메소드를 오버라이드 (override) Foo
의 서브 클래스를 컴파일 할 수; 그 코드는 더 이상 을 내 최신 버전과 비교하면 컴파일되지 않습니다. 하지만 소스 호환성이 깨지면 바이너리 호환성도 손상된다는 것을 의미합니까? java.sql.Date
이 java.util.Date
것을 어떤 행동을 중단 않는다고 가정 -
[호환성 점검 도구] (https://lvc.github.io/japi-compliance-checker/)를 실행하여 수행 여부를 확인할 수 있습니다. –
어떤 종류의 바이너리 호환성을 찾고 있습니까? 컴파일 된 것, 대체되는 것은 무엇입니까? 어떻게로드합니까? –