有人可以告诉我分配零长度缓冲区的可能目的是什么?
ByteBuffer.allocate(0); // no IllegalArgumentException
为什么设计API的人会这样做?
感谢您的评论和解答。
我希望会有这样的更新。 :)
public abstract class ByteBuffer
extends Buffer
implements Comparable<ByteBuffer> {
public static final ByteBuffer VOID = allocate(0);
}
答案 0 :(得分:4)
如果您的方法必须返回ByteBuffer
并且返回null
因任何原因而不合适,但您没有要返回的数据,则返回零长度ByteBuffer
将满足这些条件。
答案 1 :(得分:2)
这可以用来实现Null对象设计模式http://en.wikipedia.org/wiki/Null_Object_pattern,类似于Collections.emptyList和其他,创建一个可以重用的不可变对象。