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