我有一個HashMap<String,Object>
並存儲了來自3種不同類型(整數,字符串,長整數)的一些數據。
如何查找具有特定鍵的值的類型?在java中的HashMap中獲取變量類型
1
A
回答
3
可以調用getClass
method找到一個對象的類型:
map.get(key).getClass()
1
你可能會重新考慮同一個集合不同類型混爲一談。你失去了泛型的自動類型檢查。
否則,您需要使用instanceof或SLaks建議的getClass來找出類型。
2
它可能是更好地包裝在一個自定義類(如標籤聯合)
class Union{
public static enum WrappedType{STRING,INT,LONG;}
WrappedType type;
String str;
int integer;
long l;
public Union(String str){
type = WrappedType.STRING;
this.str=str;
}
//...
}
這是更清潔,你可以肯定你會得到什麼
+0
或每種類型的子類型,IFYSWIM。甚至可以添加一些有趣的行爲。 –
+0
取決於他想用它做什麼 –
2
如果你想加工爲主類型。
Object o = map.getKey(key);
if (o instanceof Integer) {
..
}
你也可以在一些智能類中封裝值或映射。
1
假設你會做一些事情的結果,你可以嘗試instanceof
操作:
if (yourmap.get(yourkey) instanceof Integer) {
// your code for Integer here
}
2
人們普遍不贊成不必要地使用Object
類型。但根據你的情況,你可能必須有HashMap<String, Object>
,儘管這是最好的避免。這就是說,如果你必須使用一個,這裏有一小段代碼可能會有所幫助。它使用instanceof
。
Map<String, Object> map = new HashMap<String, Object>();
for (Map.Entry<String, Object> e : map.entrySet()) {
if (e.getValue() instanceof Integer) {
// Do Integer things
} else if (e.getValue() instanceof String) {
// Do String things
} else if (e.getValue() instanceof Long) {
// Do Long things
} else {
// Do other thing, probably want error or print statement
}
}
相關問題
- 1. 如何在Java中獲取類型變量的類型泛型
- 2. 在MySQL中獲取變量的類型
- 3. 獲取Kotlin中變量的類型
- 4. java中變量的類型
- 5. 在Java中存儲變量類型
- 6. HashMap中的Java有界類型參數
- 7. 從類中獲取變量
- 8. 從類型變量中獲取實際類型
- 9. 的Java:獲取類的變量
- 10. Java - 獲取HashMap中的密鑰索引?
- 11. 從java中的hashmap/keyset獲取值?
- 12. 如何從Java中的HashMap獲取值?
- 13. 從Java中的HashMap獲取元素?
- 14. 在java中獲取變量值的問題。變量的範圍
- 15. 在不同的類中獲取ThreadLocal變量 - Java - Selenium WebDriver
- 16. Java在另一個類的循環中獲取變量?
- 17. 如何在MATLAB中獲取變量的類型?
- 18. 獲取不同類型的變量
- 19. 獲取變量類型的AutoHotkey
- 20. 如何在java中獲取列表類變量?
- 21. 在Java中改變類型的子類
- 22. 使用self獲取類中的變量?
- 23. 獲取變量類型名稱
- 24. 如何獲取變量類型?
- 25. Java如何在通用接口的泛型方法中捕獲類型變量?
- 26. 布爾類型在類中的變量
- 27. Java變量中捕獲塊異常類
- 28. 獲取python變量中存儲爲文本的類型
- 29. 試圖從JS變量中獲取輸入類型的編號
- 30. 容量和indexFor在Java中的Hashmap
由於您知道期望什麼樣的對象。參見[this](http://stackoverflow.com/questions/106336/how-do-i-find-out-what-type-each-object-is-in-a-arraylistobject)。 – abhinav