我創建了一個類來擴展的KeyEvent:如何通過名稱獲取「public static final int」值?
public class myKeyEvent extends KeyEvent {
public static final int MY_KEYCODE_01 = KeyEvent.KEYCODE_A;
//...
public static final int MY_KEYCODE_30 = KeyEvent.KEYCODE_Z;
}
現在,我想通過變量名的整數值從另一個類(如「MY_KEYCODE_01」應該返回整數值KeyEvent.KeyCODE_A)(另一個文件)。
我想:
try{
Class cls = myKeyEvent.class.getClass();
Field field = cls.getDeclaredField("MY_KEYCODE_01");
int value = (Integer) field.get(cls);
Log.v("TAG", "Field value is " + value);
} catch (NoSuchFieldException e) {
Log.e("TAG", "Field either doesn't exist or is not public: " + e.toString());
}
在logcat的:
Field either doesn't exist or is not public: java.lang.NoSuchFieldException: MY_KEYCODE_01
我該怎麼辦呢?
如果'myKeyEvent'類是'public',那麼我想你可以簡單地做這樣的:'場場= KeyEvent.MY_KEYCODE_01;'因爲'MY_KEYCODE_01'領域也是'public' – Bhushan 2011-12-27 15:09:24
更名的事情,方式會令人困惑 - 這些數字對開發者來說並不是特別有用(特別是因爲你似乎跳過了一些)。而且,靜態字段是繼承的,所以你應該能夠以'myKeyEvent.KEYCODE_A'的形式訪問它們(請將該類名稱稍微改好一點)。你究竟想要完成什麼(除了反思,這有點無意義,因爲你已經硬連線了哪個班級......)? – 2011-12-27 16:50:20