0
我定義了一個枚舉象下面這樣:爲什麼JNI在枚舉中找不到自定義靜態?
public enum EventType {
UPDATE(0), ADD(1), REMOVE(2), RESPONSE(3);
private Integer id;
public Integer id() {
return this.id();
}
/**
* constructor method
*/
EventType(Integer id) {
this.id = id;
}
public static EventType getInstance(Integer id) {
switch (id) {
case 0:
return UPDATE;
case 1:
return ADD;
case 2:
return REMOVE;
case 3:
return RESPONSE;
default:
return null;
}
}
}
我想創建的回調getInstance方法一個枚舉的實例,如下面的JNI代碼:
jclass eventType_cls = (*env)->FindClass(env,"com/example/hellojni/EventType");
jmethodID midInstance = (*env)->GetStaticMethodID(env,eventType_cls,"getInstance","(I)[Lcom/example/hellojni/EventType;");
它傳遞的編譯器,但是當運行JNI的GetStaticMethodID方法,該平臺將引發錯誤象下面這樣:
java.lang.NoSuchMethodError: no static method with name='getInstance'
signature='(I)Lcom/example/hellojni/EventType;'
in class Lcom/example/hellojni/EventType;
我不知道有什麼不同枚舉與其他類做什麼,你有什麼ID EA?
'[LCOM /例子/ hellojni/EventType'似乎是一個_Array_ 'com.example.hellojni.EventType' ...或者僅僅是你的文章中的一個錯字? –
不要試圖發明JNI方法簽名。使用'javap -s'的輸出。這絕不是錯的。 – EJP
對不起,'['是編輯中的錯誤,因爲我在getIntsnace()方法後嘗試獲取values()方法。 – David