我有一个List接口以及一个实现List的SLList类。我有另一个类ListIterator,它使用SLList来实例化一个这样的对象:
List<E> list = new SLList<>();
那部分没问题。但是,当我尝试调用仅在SLList类中找到的方法时,我收到编译器错误,说它无法找到该方法。
答案 0 :(得分:2)
如果要从SLList调用方法,则变量的声明必须是SLList类型:
SLList<E> list = new SLList<>(); //this is what I mean
对于编译器,只有声明的类型很重要(左边的部分)
答案 1 :(得分:2)
所以你试图做这样的事情?
List<E> list = new SLList<>();
list.someMethodOnlyInSLList();
好吧,在第二行中,编译器只知道列表是List<E>
,因此您无法调用实现中存在的任何方法,这不是接口的一部分。
我想要你做到了
创建一个新接口,可能从包含该方法的List扩展并使用该接口而不是List
使用SLList<E> list = new SLList<>();
代替