📄 abstractiobuffer.java
字号:
} /** * {@inheritDoc} */ @Override public final byte get(int index) { return buf().get(index); } /** * {@inheritDoc} */ @Override public final short getUnsigned(int index) { return (short) (get(index) & 0xff); } /** * {@inheritDoc} */ @Override public final IoBuffer put(int index, byte b) { autoExpand(index, 1); buf().put(index, b); return this; } /** * {@inheritDoc} */ @Override public final IoBuffer get(byte[] dst, int offset, int length) { buf().get(dst, offset, length); return this; } /** * {@inheritDoc} */ @Override public final IoBuffer put(ByteBuffer src) { autoExpand(src.remaining()); buf().put(src); return this; } /** * {@inheritDoc} */ @Override public final IoBuffer put(byte[] src, int offset, int length) { autoExpand(length); buf().put(src, offset, length); return this; } /** * {@inheritDoc} */ @Override public final IoBuffer compact() { int remaining = remaining(); int capacity = capacity(); if (capacity == 0) { return this; } if (isAutoShrink() && remaining <= capacity >>> 2 && capacity > minimumCapacity) { int newCapacity = capacity; int minCapacity = Math.max(minimumCapacity, remaining << 1); for (;;) { if (newCapacity >>> 1 < minCapacity) { break; } newCapacity >>>= 1; } newCapacity = Math.max(minCapacity, newCapacity); if (newCapacity == capacity) { return this; } // Shrink and compact: //// Save the state. ByteOrder bo = order(); //// Sanity check. if (remaining > newCapacity) { throw new IllegalStateException( "The amount of the remaining bytes is greater than " + "the new capacity."); } //// Reallocate. ByteBuffer oldBuf = buf(); ByteBuffer newBuf = getAllocator().allocateNioBuffer(newCapacity, isDirect()); newBuf.put(oldBuf); buf(newBuf); //// Restore the state. buf().order(bo); } else { buf().compact(); } mark = -1; return this; } /** * {@inheritDoc} */ @Override public final ByteOrder order() { return buf().order(); } /** * {@inheritDoc} */ @Override public final IoBuffer order(ByteOrder bo) { buf().order(bo); return this; } /** * {@inheritDoc} */ @Override public final char getChar() { return buf().getChar(); } /** * {@inheritDoc} */ @Override public final IoBuffer putChar(char value) { autoExpand(2); buf().putChar(value); return this; } /** * {@inheritDoc} */ @Override public final char getChar(int index) { return buf().getChar(index); } /** * {@inheritDoc} */ @Override public final IoBuffer putChar(int index, char value) { autoExpand(index, 2); buf().putChar(index, value); return this; } /** * {@inheritDoc} */ @Override public final CharBuffer asCharBuffer() { return buf().asCharBuffer(); } /** * {@inheritDoc} */ @Override public final short getShort() { return buf().getShort(); } /** * {@inheritDoc} */ @Override public final IoBuffer putShort(short value) { autoExpand(2); buf().putShort(value); return this; } /** * {@inheritDoc} */ @Override public final short getShort(int index) { return buf().getShort(index); } /** * {@inheritDoc} */ @Override public final IoBuffer putShort(int index, short value) { autoExpand(index, 2); buf().putShort(index, value); return this; } /** * {@inheritDoc} */ @Override public final ShortBuffer asShortBuffer() { return buf().asShortBuffer(); } /** * {@inheritDoc} */ @Override public final int getInt() { return buf().getInt(); } /** * {@inheritDoc} */ @Override public final IoBuffer putInt(int value) { autoExpand(4); buf().putInt(value); return this; } /** * {@inheritDoc} */ @Override public final int getInt(int index) { return buf().getInt(index); } /** * {@inheritDoc} */ @Override public final IoBuffer putInt(int index, int value) { autoExpand(index, 4); buf().putInt(index, value); return this; } /** * {@inheritDoc} */ @Override public final IntBuffer asIntBuffer() { return buf().asIntBuffer(); } /** * {@inheritDoc} */ @Override public final long getLong() { return buf().getLong(); } /** * {@inheritDoc} */ @Override public final IoBuffer putLong(long value) { autoExpand(8); buf().putLong(value); return this; } /** * {@inheritDoc} */ @Override public final long getLong(int index) { return buf().getLong(index); } /** * {@inheritDoc} */ @Override public final IoBuffer putLong(int index, long value) { autoExpand(index, 8); buf().putLong(index, value); return this; } /** * {@inheritDoc} */ @Override public final LongBuffer asLongBuffer() { return buf().asLongBuffer(); } /** * {@inheritDoc} */ @Override public final float getFloat() { return buf().getFloat(); } /** * {@inheritDoc} */ @Override public final IoBuffer putFloat(float value) { autoExpand(4); buf().putFloat(value); return this; } /** * {@inheritDoc} */ @Override public final float getFloat(int index) { return buf().getFloat(index); } /** * {@inheritDoc} */ @Override public final IoBuffer putFloat(int index, float value) { autoExpand(index, 4); buf().putFloat(index, value); return this; } /** * {@inheritDoc} */ @Override public final FloatBuffer asFloatBuffer() { return buf().asFloatBuffer(); } /** * {@inheritDoc} */ @Override public final double getDouble() { return buf().getDouble(); } /** * {@inheritDoc} */ @Override public final IoBuffer putDouble(double value) { autoExpand(8); buf().putDouble(value); return this; } /** * {@inheritDoc} */ @Override public final double getDouble(int index) { return buf().getDouble(index); } /** * {@inheritDoc} */ @Override public final IoBuffer putDouble(int index, double value) { autoExpand(index, 8); buf().putDouble(index, value); return this; } /** * {@inheritDoc} */ @Override public final DoubleBuffer asDoubleBuffer() { return buf().asDoubleBuffer(); } /** * {@inheritDoc} */ @Override public final IoBuffer asReadOnlyBuffer() { recapacityAllowed = false; return asReadOnlyBuffer0(); } /** * Implement this method to return the unexpandable read only version of * this buffer. */ protected abstract IoBuffer asReadOnlyBuffer0(); /** * {@inheritDoc} */ @Override public final IoBuffer duplicate() { recapacityAllowed = false; return duplicate0(); } /** * Implement this method to return the unexpandable duplicate of this * buffer. */ protected abstract IoBuffer duplicate0(); /** * {@inheritDoc} */ @Override public final IoBuffer slice() { recapacityAllowed = false; return slice0(); } /** * {@inheritDoc} */ @Override public final IoBuffer getSlice(int index, int length) { if (length < 0) { throw new IllegalArgumentException("length: " + length); } int limit = limit(); if (index > limit) { throw new IllegalArgumentException("index: " + index); } int endIndex = index + length; if (capacity() < endIndex) { throw new IndexOutOfBoundsException("index + length (" + endIndex + ") is greater " + "than capacity (" + capacity() + ")."); } clear(); position(index); limit(endIndex); IoBuffer slice = slice(); position(index); limit(limit); return slice; } /** * {@inheritDoc} */ @Override public final IoBuffer getSlice(int length) { if (length < 0) { throw new IllegalArgumentException("length: " + length); } int pos = position(); int limit = limit(); int nextPos = pos + length; if (limit < nextPos) { throw new IndexOutOfBoundsException("position + length (" + nextPos + ") is greater " + "than limit (" + limit + ")."); } limit(pos + length); IoBuffer slice = slice(); position(nextPos); limit(limit); return slice; } /** * Implement this method to return the unexpandable slice of this * buffer. */ protected abstract IoBuffer slice0(); /** * {@inheritDoc} */ @Override public int hashCode() { int h = 1; int p = position(); for (int i = limit() - 1; i >= p; i--) { h = 31 * h + get(i); } return h; } /** * {@inheritDoc} */ @Override
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -