如何判斷Map中的key或value類型


在上班寫工具類時,遇到了一個問題,將xml文件的節點都放入map容器中時,map的value也是一個map,導致取map的value時,需要判斷這個value的數據類型,用到了一下說的這些知識:

對於某些從泛型(比如:Map<K, V>)中繼承過來的數據,K可能是String、Integer、等等。如果需要map.get(key),得先確保key的類型跟map的K匹配。

對於key類型的判斷,大概的思路:通過map.keySet()獲取key的集合,存在Set<Object>類型變量中;然后用一個Object接收第一個key;然后有兩種方法判斷它的類型:

1、instanceof

2、class 的 equals()方法

g對於某些從泛型(比如:Map<K, V>)中繼承過來的數據,K可能是String、Integer、等等。如果需要map.get(key),得先確保key的類型跟map的K匹配。

對於key類型的判斷,大概的思路:通過map.keySet()獲取key的集合,存在Set<Object>類型變量中;然后用一個Object接收第一個key;然后有兩種方法判斷它的類型:

1、instanceof

2、class 的 equals()方法

第二種方法的實現:

  

			//獲取cache中的key的class,用於判斷key的類型
			Class<? extends Object> keyClass = null;
			Map<Object, Object> m = cache.getCache().asMap();
			Set<Object> s = m.keySet();
			for(Object k : s){
				keyClass = k.getClass();
				break;//只需要判斷第一個元素
			}
			
			//根據cache中key的類型做類型轉換:
			if(keyClass.equals(Integer.class)){	//Integer類型
				List<Integer> iKeys = new LinkedList<>();
				for(Object key : keys){
					iKeys.add(Integer.valueOf((String) key));
				}
				cache.getCache().invalidateAll(iKeys);
			}else {	//缺省為String類型,不用轉換
				cache.getCache().invalidateAll(keys);
			}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM