값이 0x00000001 인 변수의 이름에 액세스 하시겠습니까? 이것이 가능하지 않은 것보다 :
는 적어도 반사를 통해 변수의 이름을 얻기 위해 기술적으로 가능하다 Java8와
public class DefinedValues {
public static final int CommandGroupLength = 0x00000001;
}
, Java Reflection: How to get the name of a variable?
당신이지도와 훨씬 쉽게 같은 일을 달성 할 수있는 볼 수있는 키 - 값 쌍을 포함합니다. 그것은 컬렉션이나 배열 또는 뭔가를 반환해야합니다, 하나가 보장되지 않기 때문에
Map<String,Integer> myMap= new HashMap<>();
myMap.put("CommandGroupLength", 0x00000001);
는 당신은, 그 값이 모든 키에 대한지도의 entrySet에서 검색하는 함수를 작성 비슷한. 여기 내 코드 :
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;
}
값이 0x00000001 인 변수의 이름에 액세스 하시겠습니까? 불가능합니다. 그러나 키 - 값 쌍이있는지도를 만들면 결과를 얻을 수 있습니다. –
왜이 작업을 원하십니까? 더 쉬운 해결책이있을 수 있습니다. – Aloso
아마도 반성을 사용하고 수업의 모든 분야를 다룰 수는 있지만, 그 시점에서 당신은 그 일을 멈추고 정말로하고 싶은지를 생각해야합니다. 그러면 당신은하지 말아야합니다. – cubrr