back-end-study / effective-java

🔥 이펙티브 자바 스터디
42 stars 4 forks source link

[Item22] 인터페이스는 타입을 정의하는 용도로만 사용하라 #34

Closed iamsojung closed 1 year ago

sawooook commented 1 year ago

p140에서 바이너리 호환성을 위해 여전히 상수 인터페이스를 구현하고 있어야한다 ..! 라고 적혀있는 부분이 있는데 잘 이해가 안가는데 ㅠㅠㅠ 혹시 어떻게 이해하셨을까요?!

iamsojung commented 1 year ago

p140에서 바이너리 호환성을 위해 여전히 상수 인터페이스를 구현하고 있어야한다 ..! 라고 적혀있는 부분이 있는데 잘 이해가 안가는데 ㅠㅠㅠ 혹시 어떻게 이해하셨을까요?!

"클라이언트 코드가 내부 구현에 해당하는 상수들에 종속되게 한다. 그래서 다음 릴리스에서 이 상수들을 더는 쓰지 않게 되더라도 바이너리 호환성을 위해 여전히 상수 인터페이스를 구현하고 있어야 한다."

뭔가를 바꾼 이후에도 에러 없이 기존 바이너리가 실행될 수 있는 상황을 바이너리 호환성이라고 한다. 예를들어 인터페이스에 메소드를 추가했을 때 추가된 메소드를 호출하지 않는 한 문제가 일어나지 않는데 이를 바이너리 호환성이라고 한다. 그러나 호출하게되면 런타임 에러가 발생한다.

내부 구현에 해당하는 상수들에 종속되어 있으니, 바이너리 호환성을 위해 상수 인터페이스를 구현하고 있어야 된다는 의미 같습니다 !!