0x00000001の値を持つ変数の名前にアクセスしますか?これは不可能であるより:Java8と
public class DefinedValues {
public static final int CommandGroupLength = 0x00000001;
}
ことが技術的に可能である、少なくともあなたは地図とはるかに簡単に同じことを達成することができますJava Reflection: How to get the name of a variable?
を参照して、反射を経由して、変数の名前を取得するには、どのKey-Value-Pairsを含みます。
Map<String,Integer> myMap= new HashMap<>();
myMap.put("CommandGroupLength", 0x00000001);
その後、あなたは唯一の1がある確保されていないため、それがコレクションまたは配列か何かを返す必要があります、その値を持つすべてのキーのための地図のの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を持つ変数の名前にアクセスしたいですか?それは不可能です。しかし、あなたはKey-Value Pairsを持つMapを作成することができます。その結果から、結果を得ることができます –
なぜこれをやりたいのですか?簡単な解決策があるかもしれません。 – Aloso
あなたはおそらくリフレクションを使用してクラスのすべてのフィールドを調べることができますが、その時点でこれをやりたいかどうかを本当に考えてください。そうしないといけません。 – cubrr