이클립스 내부 소스를 보니 이런 부분이 있다.
ArrayList 의 instance 를 피하기 위해 switch-case (if-else 2번)을 사용했다. Instance 의 cost 가 크다는건 알고 있었지만 빈번히 발생하는 경우에 대해서 저렇게 처리하는걸 눈으로 직접 보내 확 와닿는다.
switch (strategies.size()) {
// optimization
case 0:
break;
case 1:
((IAutoEditStrategy) strategies.iterator().next()).customizeDocumentCommand(document, command);
break;
// make iterator robust against adding/removing strategies from within strategies
default:
strategies= new ArrayList(strategies);
for (final Iterator iterator= strategies.iterator(); iterator.hasNext(); )
((IAutoEditStrategy) iterator.next()).customizeDocumentCommand(document, command);
break;
}