本文介紹了ConCurentHashMap沒有keyset()方法,這怎么可能呢?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在調試從Matlab
調用的Java
代碼,并獲得異常:
Java exception occurred:
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
庫類沒有庫方法,怎么可能?
更新
Matlab正在使用Java7
。我調用的代碼是為Java8
編譯的,包含語法
for (Tag t : matrix.keySet()) {
即Java8
-特定。雖然聲稱它應該與Java7
是二進制兼容的,否則在Java8
中做許多妥協是沒有意義的。
推薦答案
在JAVA 8中,ConcurrentHashMap.keySet()
返回類型已更改。
在Oracle JDK 7中:
public Set<K> keySet() {
Set<K> ks = keySet;
return (ks != null) ? ks : (keySet = new KeySet());
}
在Oracle JDK 8中:
public KeySetView<K,V> keySet() {
KeySetView<K,V> ks;
return (ks = keySet) != null ? ks : (keySet = new KeySetView<K,V>(this, null));
}
public static class KeySetView<K,V> extends CollectionView<K,V,K>
implements Set<K>, java.io.Serializable {
這篇關于ConCurentHashMap沒有keyset()方法,這怎么可能呢?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,