This is a small utility class, whose main functionality is to allow
simple reuse of raw byte/char buffers. It is usually used through
ThreadLocal
member of the owning class pointing to
instance of this class through a
SoftReference
. The
end result is a low-overhead GC-cleanable recycling: hopefully
ideal for use by stream readers.
Regarding implementation: the key design goal is simplicity; and to
that end, different types of buffers are handled separately. While
code may look inelegant as a result (wouldn't it be neat to just
have generic char[]/byte[] buffer accessors?), benefit is that
no data structures are needed, just simple references. As long
as usage pattern is well known (which it is, for stream readers)
this should be highly optimal and robust implementation.