错误消息的含义是什么:返回类型不兼容

19kate96:

我正在尝试entrySet()为自定义HashMap 创建方法。我已经附加了名为的入口类MyEntryentrySet()方法。

我收到错误:

返回类型与 Map<K,V>.entrySet()

...,返回类型用红色下划线标出。我不明白这是什么意思。

@Override   
public Set<HashMap<K,V>.MyEntry<K, V>> entrySet(){  
if (entrySetView != null) return entrySetView;
    else return entrySetView = new AbstractSet<HashMap<K,V>.MyEntry<K,V>>() {
        @Override
        public Iterator<HashMap<K,V>.MyEntry<K, V>> iterator() {
            return new HashIterator<HashMap<K,V>.MyEntry<K, V>>() {
                @Override
                public HashMap<K,V>.MyEntry<K, V> next() {
                    return nextEntry();
                }
            };
        }

        @Override
        public int size() {
            return HashMap.this.size();
        }

        @Override
        public void clear() {
            HashMap.this.clear();
        }
    };
}

public class MyEntry<K, V> implements Map.Entry<K,V>{
    private K key;
    private V value;
    private MyEntry<K,V> next;
    private int hash;

    public MyEntry() {
        counter++;
    }

    public MyEntry(K key, V value, MyEntry<K,V> next, int h) {
        this.key = key;
        this.value = value;
        this.next = next;
        this.hash = h;
        counter++;
    }

    public boolean equals(Object o) {
        if(this == o) return true;
        if (!(o instanceof MyEntry))
            return false;
        MyEntry entry = (MyEntry)o;
        Object k1 = getKey();
        Object k2 = entry.getKey();
        if (k1 == k2 || (k1 != null && k1.equals(k2))) {
            Object v1 = getValue();
            Object v2 = entry.getValue();
            if (v1 == v2 || (v1 != null && v1.equals(v2)))
                return true;
        }
        return false;
    }

    public K getKey() {
        return key;
    }
    public V getValue() {
        return value;
    }

    public void setKey(K key) {
        this.key = key;
    }

    public Object setValue(Object val) {
        V oldValue = value;
        value = (V) val;
        return oldValue;
    }

    public MyEntry<K,V> getNext(){
        return next;
    }

    public void setNext(MyEntry<K,V> n) {
        this.next = n;
    }

    public String toString() {
        return "{" + getKey() + "," + getValue() + "}";
    }
}
他们是 :

entrySetMap接口有一个返回类型Set<Map.Entry<K, V>>,所以你不能返回Set<HashMap<K,V>.MyEntry<K, V>>

Set<HashMap<K,V>.MyEntry<K, V>>不是的子接口Set<Map.Entry<K, V>>

我相信这样的方法应该可以工作(您可能还需要更改其类型entrySetView):

@Override   
public Set<Map.Entry<K, V>> entrySet(){  
  if (entrySetView != null) 
    return entrySetView;
  else 
    return entrySetView = new AbstractSet<Map.Entry<K, V>>() {
        @Override
        public Iterator<Map.Entry<K, V>> iterator() {
            return new HashIterator<Map.Entry<K, V>>() {
                @Override
                public Map.Entry<K, V> next() {
                    return nextEntry();
                }
            };
        }

        @Override
        public int size() {
            return HashMap.this.size();
        }

        @Override
        public void clear() {
            HashMap.this.clear();
        }
    };
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

类型不兼容的Java中的此错误是什么?

Java错误:“类型不兼容”消息

Java-错误:返回类型不兼容

grails错误:getGrailsApplication()的返回类型不兼容

分段故障调试器的错误消息含义是什么?

为什么在返回“ impl Trait”的函数中出现“匹配臂具有不兼容的类型”错误?

错误:类型不兼容:消息无法转换为int吗?

错误:不兼容的类型:意外的返回值:Java的8

枚举类型约束返回错误“签名和实现不兼容...”

错误是什么数据类型varchar和datetime2在add运算符中不兼容

不了解F#错误消息:类型'Candle.Volumes-> Totals'与类型'Totals'不兼容

不兼容的通用返回类型

AlertDialog不兼容的类型错误

Java不兼容类型错误

Greenfoot不兼容的类型错误

为什么类型不兼容?

ANSIC IPC消息队列struct msgbuf中类型的含义是什么

在Swift中类型也是对象吗?向对象发送消息的含义是什么

返回类型时不兼容的类型

这是什么意思:“属性类型“ JSQMessagesCollectionView”与继承自“ UICollectionViewLayout”的类型“ UICollectionView”不兼容

指向成员类型的指针与对象类型不兼容 → 原因是什么?

熊猫:对象类型的真正含义是什么?

此类型声明的含义是什么?

此类型定义的实际含义是什么?

不兼容的类型:lambda表达式中的返回类型错误?

Java Lambda表达式:不兼容的类型:lambda表达式中的返回类型错误

Kotlin中的密封类,不兼容类型错误无法返回父类型

(从具有不兼容返回类型“char **”的函数返回 char (*)(255))C 中的错误

DAO返回类型与List <Object>不兼容