分配零容量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和其他,创建一个可以重用的不可变对象。