Java Collections Framework를 살펴보면 인터페이스 중 일부에 주석이 있음을 알았습니다 (optional operation)
. 이러한 메소드를 사용 UnsupportedOperationException
하면 해당 메소드를 구현하지 않으려 는 경우 클래스를 통해 구현할 수 있습니다.
이에 대한 예는의 addAll
방법입니다 Set Interface
.
이제이 일련의 질문에서 언급했듯이 인터페이스는 용도에 대한 정의 계약입니다.
인터페이스는 클래스의 기능과 클래스의 기능을 분리하기 때문에 중요합니다. 고객이 기대할 수있는 것을 정의하는 계약은 개발자가 계약을지지하는 한 원하는 방식으로 자유롭게 구현할 수 있도록합니다.
과
인터페이스는 객체가 수행 할 수있는 동작에 대한 설명입니다. 예를 들어 전등 스위치를 뒤집거나 전등이 켜질 때 어떻게되는지 신경 쓰지 않아도됩니다. 객체 지향 프로그래밍에서 인터페이스는 객체가 "X"가되기 위해 가져야하는 모든 기능에 대한 설명입니다.
과
인터페이스 기반 접근 방식이 훨씬 훌륭하다고 생각합니다. 그런 다음 의존성을 멋지게 조롱 할 수 있으며 모든 것이 기본적으로 덜 밀접하게 결합됩니다.
인터페이스의 목적은 계약을 정의하고 종속성을 느슨하게 결합 UnsupportedOperationException
하는 것이므로 일부 방법으로 목적을 달성 하지 못 합니까? 더 이상 통과 할 수 없으며 Set
그냥 사용할 수 있음을 의미 합니다 addAll
. 오히려 어떤 구현 Set
이 전달되었는지 알아야하므로 사용할 수 있는지 여부를 알 수 있습니다 addAll
. 그건 나에게 쓸모없는 것 같습니다.
그래서 요점은 UnsupportedOperationException
무엇입니까? 레거시 코드를 보완하고 인터페이스를 정리해야합니까? 아니면 내가 놓친 더 감각적 인 목적이 있습니까?
addAll
되어 있지 않습니다HashSet
.AbstractCollection
가장 확실하게 던지지 않는 기본 구현을 연기합니다UnsupportedOperationException
.