반드시 hasItems()
이 사실이 아닌 이해가되지 않습니다 getNextItem()
를 호출 의미 이상한 소리?
어쨌든 논리가 작동하는 방식은 동일합니다. OutgoingItems
오브젝트를 조건을 검사하는 새 클래스로 랩핑하십시오. assert
으로 수표를 찍었지만 원하는대로 선택할 수 있습니다.
public class OutgoingItemsDelegate {
private final OutgoingItems items;
public OutgoingItemsDelegate(OutgoingItems items) {
this.items = items;
}
public boolean hasItems() {
return items.hasItems();
}
public Object getNextItem() {
assert !items.hasItems();
// alternatively you can do this:
// if (items.hasItems()) throw new IllegalStateException("hasItems() must not be true");
return items.getNextItems();
}
}
가이 솔루션을 지불해야 할 수도 있습니다 약간의 성능과 공간 오버 헤드는 물론이고, 이상적인 솔루션이 OutgoingItems
자체를 수정하는 것입니다,하지만 실패, 그것은 실행 가능한 옵션입니다.
* assert
문을 평가하려면 명령 줄에서 -ea
플래그를 사용해야합니다.