0

谁能告诉我分配零长度缓冲区的可能目的是什么?

ByteBuffer.allocate(0); // no IllegalArgumentException

为什么设计 API 的人会这样做?

感谢您的评论和回答。

我希望会有这样的更新。:)

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

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

2 回答 2

6

如果您有一个必须返回 a 的方法ByteBuffer并且无论出于何种原因返回null都不合适,但是您没有要返回的数据,那么返回零长度ByteBuffer将满足这些条件。

于 2013-08-14T05:04:47.763 回答
2

这可以用来实现 Null Object 设计模式http://en.wikipedia.org/wiki/Null_Object_pattern,类似于 Collections.emptyList 等,创建一个可以重用的不可变对象。

于 2013-08-14T05:14:00.147 回答