6.1. java.nio.Buffer

Bufferはプリミティブ型のコンテナオブジェクトの抽象クラスです。位置、容量、リミットというプロパティを持つ配列オブジェクトなため、C言語関数へのデータ受け渡しに適しています。

例えばJNIの基本関数には、java.nio.Bufferに参照されたメモリ領域の開始アドレスを読み込み、戻すGetDirectBufferAddress関数があります。

void* GetDirectBufferAddress(JNIEnv* env, jobject buf);

JNIでJavaからバイト型のデータを受け取るには、以下のようにします。

jbyte* mybuf = (jbyte*) (*env)->GetDirectBufferAddress(env, buf);

Bufferを継承したクラスには以下のような種類があります。

JOCLでは、C言語の配列・ポインタは、Bufferオブジェクトとして受け渡しをします。

データの取得メソッドとしては以下のようなものがあります。

またデータの値を設定する場合のメソッドもBufferの実装クラスで提供されています。

Copyright 2018-2019, by Masaki Komatsu