java无法向上转换为接口

时间:2017-02-05 20:34:03

标签: java interface casting upcasting

private class EntryItr implements Iterator<Map.Entry<K, V>> {
... 
}

private class KeyItr<K> implements Iterator<K> {

    private Iterator<Map.Entry<K,V>> itr;

    KeyItr(){
        itr=new EntryItr(); // CANNOT CREATE
    }

为什么无法将 EntryItr 上传到之前实现的界面?

1 个答案:

答案 0 :(得分:0)

您发布的这段代码甚至无法编译。 您使用的泛型不正确:EntryItr类应声明为EntryItr<K, V>。此外,KeyItr的{​​{1}}字段具有类型为itr的无法识别的通用值。您应该将其更改为V,或将其添加到Object的通用签名,即KeyItr

完成这些更改后,应该可以进行作业KeyItr

请注意此处的钻石运算符表示itr = new EntryItr<>();EntryItr KeyItr具有相同的泛型签名。