不知道怎么说,但我有这个:
在
中public class DefinedValues{
public static final int CommandGroupLength = 0x00000001;
}
我想要一种从值0x00000001获取String“CommandGroupLength”的方法;
这可能吗?
答案 0 :(得分:1)
是否要访问值为0x00000001的变量的名称?比这还不可能:
public class DefinedValues {
public static final int CommandGroupLength = 0x00000001;
}
使用Java8技术上至少可以通过反射得到变量的名称,参见Java Reflection: How to get the name of a variable?
使用包含Key-Value-Pairs的Map,您可以更轻松地实现同样的目标。
Map<String,Integer> myMap= new HashMap<>();
myMap.put("CommandGroupLength", 0x00000001);
然后你编写一个函数,在Map的entrySet中搜索具有该值的所有键,因为不确定只有一个,它需要返回Collection或Array或类似的东西。 这是我的代码:
public static void main(String[] args) {
Map<String,Integer> myMap = new HashMap<>();
myMap.put("CommandGroupLength", 0x00000001);
myMap.put("testA", 5);
myMap.put("testB", 12);
myMap.put("testC", 42);
System.out.println("Searching for value 0x00000001 in myMap");
Set<String> searchResults = findKeyByValue(myMap, 0x00000001);
System.out.println("I found the following keys:");
boolean isFirst = true;
for(String result : searchResults) {
if(isFirst)
isFirst = false;
else
System.out.printf(", ");
System.out.printf("%s", result);
}
}
public static Set<String> findKeyByValue(Map<String, Integer> map, Integer value) {
Set<String> result = new HashSet<>();
if(value != null) {
Set<Entry<String, Integer>> entrySet = map.entrySet();
for(Entry<String, Integer> entry : entrySet) {
if(value.equals(entry.getValue())) {
result.add(entry.getKey());
}
}
}
return result;
}