Java:ByteBufferからの拡張

Javaは、私が上書きしない抽象メソッドを実装しているのでByteBufferから拡張することはできませんが、これらのメソッドは、asDoubleBuffer()などの作成されたすべてのByteBufferオブジェクトに対して機能します…

byte[] bytes = new byte[256];
ByteBuffer buf = ByteBuffer.wrap(bytes);
DoubleBuffer db = buf.asDoubleBuffer();

それでも、私がByteBufferから新しいクラスを拡張すると、スーパークラスが既にこのメソッドを実装していても、asDoubleBuffer()を実装する必要があります。私はここで何が起こっているのか全く理解していません…私にこれを説明してください。

ベストアンサー

ByteBufferファクトリメソッドは、ByteBufferを実装するクラスを返します。

byte[] bytes = new byte[256];
ByteBuffer buf = ByteBuffer.wrap(bytes);
System.out.println(buf.getClass());

プリント

class java.nio.HeapByteBuffer

ByteBufferを使用するのは比較的高度なツールです.IMHOを拡張しようとする前にJavaを理解する必要があります。


You can see this by looking at the code. In my IDE you can find
it by doing a + on the method.

public static ByteBuffer wrap(byte[] array) {
    return wrap(array, 0, array.length);
}

コール

public static ByteBuffer wrap(byte[] array,
                                int offset, int length)
{
    try {
        return new HeapByteBuffer(array, offset, length);
    } catch (IllegalArgumentException x) {
        throw new IndexOutOfBoundsException();
    }
}

ところで、私はByteBufferを使うのが大好きですが、あなたが実際に使っていることを理解する必要があります。
ByteBufferからのデータの解析時に使用されます。 10年の経験を持つ開発者は、使用するのが難しいと感じています。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です