我有一个List接口以及一个实现List的SLList类。我有另一个类ListIterator,它使用SLList来实例化一个对象,如下所示:我不能调用扩展我的List接口的类的方法
List<E> list = new SLList<>();
这部分是好的。但是,当我尝试调用仅在SLList类中找到的方法时,出现编译器错误,说它无法找到该方法。
我有一个List接口以及一个实现List的SLList类。我有另一个类ListIterator,它使用SLList来实例化一个对象,如下所示:我不能调用扩展我的List接口的类的方法
List<E> list = new SLList<>();
这部分是好的。但是,当我尝试调用仅在SLList类中找到的方法时,出现编译器错误,说它无法找到该方法。
如果你想打电话从SLList的方法,该变量的声明需要是SLList类型:
SLList<E> list = new SLList<>(); //this is what I mean
对于(左边部分)编译器只声明的类型事项
没问题。该方法只存在于SSList类中。由于您将其设置为List界面,因此该方法将不可用。 – Dale
好吧,明白了。谢谢! – user5362867
你应该接受一个适合你的答案@ user5362867 –
所以你试图做这样的事情?
List<E> list = new SLList<>();
list.someMethodOnlyInSLList();
那么,在第二行的编译器仅知道名单是List<E>
所以你不能调用任何本发明的方法在实施,这是不是接口的一部分。
我你想这样做,你要么
创建一个新的接口,可能是从它包含了方法和用途,而不是List
使用SLList<E> list = new SLList<>();
代替
我明白了。谢啦。 – user5362867
这与泛型有什么关系?这看起来更像是一个调用父类中不存在的子类中的方法的问题。 –
Idk,我认为这可能是一个泛型的问题,但你是对的。 – user5362867