JNIフィールド記述子"([Ljava/lang/String;)V」---構文定義

1355 ワード

“([Ljava/lang/String;)V」は関数の戻り値とパラメータの符号化である.この符号化をJNIフィールド記述子(JavaNative Interface FieldDescriptors)と呼ぶ.1つの配列int[]は、このように「[I」として表す必要があります.複数の配列double[][]がこのように「[[D]」として表す必要があります.つまり、各角括弧が始まると、1つの配列次元数を表します.複数のブロックの後ろに、配列のタイプがあります.
Lで始まる記述子がクラス記述子であれば、クラスの文字列に続いてセミコロン";"終わります.
 "Ljava/lang/String;" String;
"[I" int[];
"[Ljava/lang/Object;" Object[]。

JNIメソッド記述子は、主に括弧にパラメータを配置し、括弧の後ろに戻りタイプを配置します.以下の通りです.( ) 関数がパラメータタイプを返す必要がない場合は、「V」で表します.たとえば
"()Ljava/lang/String;" String f();
"(ILjava/lang/Class;)J" long f(int i, Class c);
"([B)V" void String(byte[] bytes);

Javaタイプ
アイコン
Boolean
Z
Byte
B
Char
C
Short
S
Int
I
Long
J
Float
F
Double
D
Void
V
objectsオブジェクト
「L」で始まり、「;」で始まる.最後に、真ん中は「/」で区切られたパッケージとクラス名です.例えば、Ljava/lang/String;ネストされたクラスの場合、ネストは$で表されます.例:(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"
また配列タイプの略記は、表Aに示すような対応タイプの略記形式を「[]に加えて表すとよい.例えば、[Iはint[]を表す.[L/java/lang/objects;Objectsを表す[]また.参照タイプ(基本タイプの配列を除く)の表示には、最後に「;」があります.例:
"()V"  void Func();
"(II)V"   void Func(int, int);
"(Ljava/lang/String;Ljava/lang/String;)I".  int Func(String,String)