java用其他方法实现接口

| 我有一个实现“ 1”接口的类“ 0”。另外,它还有接口方法之外的其他几种方法(例如
public void boolean hasPrev()
)。当我尝试在主类中调用该方法时,IDE无法解析该方法。 这是我用来调用它的代码
Iterator<String> di = new MyDoublyIterator<String>();
di.hasPrev();
所以我想我的问题是为什么它找不到这种方法。我是否必须构建实现该接口的抽象类并对其进行扩展?     
已邀请:
        问题是该双变量属于Iterator类型。因此,它可以包含此接口的任何实现。因此,IDE无法确定它包含MyDoublyIterator的实例。因此,要使其按您的要求工作,您必须将变量的类型更改为MyDoublyIterator。     
        最好先用您自己的接口扩展原始接口
Iterator<E>
,例如:用诸如
hasPrev()
之类的附加方法扩展
DoubleIterator<E>
,然后在类
MyDoublyIterator<E>
中实现新创建的接口
DoubleIterator<E>
。 否则,您可以像这样实例化您的课程:
MyDoublyIterator<String> di = new MyDoublyIterator<String>();
di.hasPrev();
这样,编译器就不会抱怨,因为您正在创建ѭ0type类型。     
        当编译器看到
di.hasPrev();
时,它仅知道
di
Iterator<String>
,并且不知道它是您自己的类型。因此它不知道您的自定义方法。     
        
Iterator<String> di = new MyDoublyIterator<String>(); 
di.hasPrev(); 
它不会帮助您。编译器需要一种方法来知道您自己的接口具有该方法,而不是内置接口Iterator接口,即
Iterator<String>
。在这里,您正在为内置的Iterator接口(即
Iterator<String>
)创建参考。 因此,如果您有自己的名为
MyDoublyIterator<E>
的接口,并且此接口具有名为
hasPrev();
的方法,则需要这样做:
 MyDoublyInterface<String> di = new MyDoublyIterator<String>(); 
 di.hasPrev();  
然后它将解决该方法调用,因为它知道您已经创建了自己的
MyDoubleInterface<T>
引用,并且现在应该可以解决问题了。 :-)     
        其他答案是正确的,但这又是另一回事-创建一个接口
extends
Iterator:
interface DoublyIterator<E> extends Iterator<E> {
    boolean hasPrev();
}

class MyDoublyIterator<E> implements DoublyIterator<E> {
    // ... implement methods
}

DoublyIterator<String> di = new MyDoublyIterator<String>();
di.hasPrev();
    

要回复问题请先登录注册