我有一個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. 從Java中的變量中獲取類
- 4. 獲取Kotlin中變量的類型
- 5. java中變量的類型
- 6. 在可變函數中獲取不可變向量的類型
- 7. 在靜態變量中獲取泛型類的類名稱
- 8. 在父類中獲取子類變量
- 9. 在Java中存儲變量類型
- 10. HashMap中的Java有界類型參數
- 11. 從類中獲取變量
- 12. 從類型變量中獲取實際類型
- 13. 如何在Java中獲取變量名?
- 14. 的Java:獲取類的變量
- 15. Java變量類型
- 16. Java的HashMap中獲取價值
- 17. 從java中的hashmap/keyset獲取值?
- 18. Java - 獲取HashMap中的密鑰索引?
- 19. 如何從Java中的HashMap獲取值?
- 20. 在java中獲取變量值的問題。變量的範圍
- 21. 在不同的類中獲取ThreadLocal變量 - Java - Selenium WebDriver
- 22. Java在另一個類的循環中獲取變量?
- 23. 在java中獲取圖像類型
- 24. 如何在MATLAB中獲取變量的類型?
- 25. Java中通用類型序列化的HashMap的HashMap
- 26. 獲取鍵盤類型的變量
- 27. 獲取變量類型的AutoHotkey
- 28. 獲取不同類型的變量
- 29. 如何從Java中的其他類中獲取變量?
- 30. 在其他類中獲取變量
由於您知道期望什麼樣的對象。參見[this](http://stackoverflow.com/questions/106336/how-do-i-find-out-what-type-each-object-is-in-a-arraylistobject)。 – abhinav