내가하는 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());
}
:
나는에 노력
Field either doesn't exist or is not public: java.lang.NoSuchFieldException: MY_KEYCODE_01
내가 어떻게 할 수 있습니까?
'myKeyEvent' 클래스가'public'이면'MY_KEYCODE_01' 필드가'public'이기 때문에'Field field = KeyEvent.MY_KEYCODE_01; '입니다. – Bhushan
그런 식으로 이름을 바꿉니다. 혼란스러워 할 것입니다. 그 숫자는 개발자에게 특히 도움이되지 않습니다 (특히 몇 개 건너 뛰었 기 때문에). 또한 정적 필드는 상속되므로 'myKeyEvent.KEYCODE_A'로 액세스 할 수 있어야합니다 (이 클래스의 이름을 좀 더 잘 지정하십시오). 정확히 무엇을 성취하려고합니까? (반사가 아닌, 약간의 무의미 함, 어떤 수업이 사용 되었기 때문에 ...)? –