2013-08-14 4 views
0

제로 길이 버퍼를 할당 할 수있는 목적은 무엇입니까?제로 용량 할당 ByteBuffer

ByteBuffer.allocate(0); // no IllegalArgumentException 

API를 설계 한 사람이 이런 짓을 왜?

의견과 답변에 감사드립니다.

이와 같은 업데이트가 있기를 바랍니다. :)

public abstract class ByteBuffer 
    extends Buffer 
    implements Comparable<ByteBuffer> { 

    public static final ByteBuffer VOID = allocate(0); 
} 
+1

왜 안 되니? 당신이 임의의 길이를 통과한다면, 던지는 지점은 무엇입니까? –

+1

동일한 이유'byte [] b = new byte [0]'이 허용됩니다. 부정적인면 그 논리적으로 불가능합니다. – rocketboy

답변

4

당신이 반환해야하는 방법이있는 경우 ByteBuffernull를 반환하는 것은 어떤 이유에서 부적절하지만 다음 그 조건을 충족시킬 길이 제로의 ByteBuffer을 반환, 반환 할 데이터가 없습니다.

2

Null 개체 디자인 패턴 http://en.wikipedia.org/wiki/Null_Object_pattern을 구현하는 데 사용할 수 있습니다. Collections.emptyList 및 기타와 유사하게 재사용 할 수있는 변경할 수없는 개체를 만듭니다.