我試圖使用Reflection
從值中打印字段的名稱。然而,當沒有重複的字段時它就起作用。但在下面的情況下,假設我有重複值的字段,我把它們放在HashMap
。在這種情況下,我得到不正確的字段名稱如何從一個具有多個相同值的字段中獲取值的字段名稱
我選擇HashMap
存儲字段名稱,但可以有一個人請告訴我,如果有任何其他的方式來實現我想要做
public class TestBug {
private static String banana = "green";
private static String apple = "red";
private static String blueberry = "blue";
private static String mango = "green";
private Map<String, String> fillFruitMap() {
Map<String, String> fruitMap = new HashMap<String, String>();
String fruitColor = "";
String fruitName = "";
Field[] fields = TestBug.class.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
try{
fruitColor = fields[i].get(this).toString();
fruitName = fields[i].getName();
fruitMap.put(fruitColor, fruitName);
}
catch(Exception e){
e.printStackTrace();
}
}
return fruitMap;
}
private String getFruitNameFromColor(String color) {
return fillFruitMap().get(color);
}
private void printStatement(String fruit) {
System.out.println("Green is the color of "+getFruitNameFromColor(fruit));
}
public static void main(String[] args) {
TestBug bug = new TestBug();
bug.printStatement(banana);
}
}
在上面的代碼由於我通過banana
到printStatement
方法它應該也打印banana
因爲我使用Reflection
並將字段值和名稱存儲爲key
和value
對在HashMap
。 但由於HashMap
不允許重複key
,banana
被覆蓋mango
。有沒有辦法實現我想要做的事情?
有沒有辦法可以使用hashCode()
?
爲什麼你不能有水果名稱作爲關鍵 –