本文介紹了ConCurentHashMap沒有keyset()方法,這怎么可能呢?的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在調(diào)試從Matlab調(diào)用的Java代碼,并獲得異常:
Java exception occurred:
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
庫類沒有庫方法,怎么可能?
更新
Matlab正在使用Java7。我調(diào)用的代碼是為Java8編譯的,包含語法
for (Tag t : matrix.keySet()) {
即Java8-特定。雖然聲稱它應(yīng)該與Java7是二進(jìn)制兼容的,否則在Java8中做許多妥協(xié)是沒有意義的。
推薦答案
在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 {
這篇關(guān)于ConCurentHashMap沒有keyset()方法,這怎么可能呢?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,






