我创造了一个号码.常量变量超过1000,那些常量是唯一的整数.
public static final FOO 335343
public static final BAR 234234
public static final BEZ 122424
....
....
....
Run Code Online (Sandbox Code Playgroud)
有没有办法打印出FOO,BAR和BEZ,这是Java中名字的变量?我不熟悉java反射.我不知道这是否有帮助.
if ( FOO == 335343)
---> output "FOO"
if ( BAR == 234234 )
---> ouptut "BAR"
....
Run Code Online (Sandbox Code Playgroud)
实际上问这个问题是我想写日志到文件
说
System.out.println("This time the output is " + FOO);
Run Code Online (Sandbox Code Playgroud)
而实际的输出是
This time the output is 335323
Run Code Online (Sandbox Code Playgroud)
我想知道哪个变量来自335323.除了将这些变量及其关联常量放入hashMap之外还有其他方法吗?
谢谢
你可以使用类似的东西:
for (Field field : MyClass.class.getDeclaredFields()){
if (field.getType().toString().equals("int")){
int val = (Integer)field.get(MyClass.this);
switch (val){
case 335343:
case 234234:
System.out.println(field.getName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
请记住更改MyClass您的类名,并且至少应该存在一个实例来获取该字段的值。因此,如果您计划在main方法中测试代码,则应该更改MyClass.this为类似new Myclass(). 另一件要记住的事情是,字段是属性而不是方法变量(因此,如果您使用它来访问方法内声明的变量,它将不起作用)。
| 归档时间: |
|
| 查看次数: |
22103 次 |
| 最近记录: |