jni 簽名獲取

GetFieldID是得到java類中的參數IDGetMethodID得到java類中方法的ID,它們只能調用類中聲明爲 public的參數或方法。使用如下:

jfieldID topicFieldId = env->GetFieldID(objectClass,"name", "Ljava/lang/String;");

jmethodID getcName=env->GetMethodID(objectClass,"getcatName","()Ljava/lang/String;");


第一參數是Java 類對象。第二個參數是參數(或方法名),第三個參數是該參數(或方法)的簽名。第三個參數由以下方法得到。

有類:


public class Cat{   
    private int catNumber;   
    String catName;

    public Cat(int i,String name, int[] a)
    {   
        catNumber=i;catName=name;
    }   
    public String getCatName ()
    {   
        return this.catName;

    }   
    public void setCatName (String catName)
    {   
        this.catName=catName;
    }   
}


先用

$ :  javac Cat.java

進行編譯,然後執行

$:javap -s Cat

即可打印出內部定義類型

Compiled from "Cat.java"
public class Cat extends java.lang.Object{
java.lang.String catName;
  Signature: Ljava/lang/String;
public Cat(int, java.lang.String, int[]);
  Signature: (ILjava/lang/String;[I)V
public java.lang.String getCatName();
  Signature: ()Ljava/lang/String;
public void setCatName(java.lang.String);
  Signature: (Ljava/lang/String;)V
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章