Rav*_*sha 8 java reflection constants
这可能不是项目中的主要用例,但我只是尝试了一种POC类型的项目,在其中我获取密钥代码,并使用其值我想在屏幕上打印密钥名称.我想重新开始编写开关案例,以便考虑通过反思.
有没有办法使用其值获取接口名称的常量整数?
KeyPressed(int i) {
string pressedKeyName = getPressedKey(i);
System.out.println(pressedKeyName);
}
Run Code Online (Sandbox Code Playgroud)
cle*_*tus 21
我可以想到两个比使用反射更好的解决方案.
任何体面的IDE都会自动填写switch语句.我使用IntelliJ并执行此操作(您只需按ctrl-enter).我确信Eclipse/Netbeans有类似的东西; 和
对于常量而言,枚举比公共静态原语更好.增加的优势是它们可以解除您的这个问题.
但要通过反思找出你想要的东西,假设:
interface Foo {
public static final int CONST_1 = 1;
public static final int CONST_2 = 3;
public static final int CONST_3 = 5;
}
Run Code Online (Sandbox Code Playgroud)
跑:
public static void main(String args[]) {
Class<Foo> c = Foo.class;
for (Field f : c.getDeclaredFields()) {
int mod = f.getModifiers();
if (Modifier.isStatic(mod) && Modifier.isPublic(mod) && Modifier.isFinal(mod)) {
try {
System.out.printf("%s = %d%n", f.getName(), f.get(null));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
CONST_1 = 1
CONST_2 = 3
CONST_3 = 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8965 次 |
| 最近记录: |