我无法从扩展List接口的类中调用方法

时间:2015-10-19 04:43:04

标签: java inheritance interface

我有一个List接口以及一个实现List的SLList类。我有另一个类ListIterator,它使用SLList来实例化一个这样的对象:

List<E> list = new SLList<>();

那部分没问题。但是,当我尝试调用仅在SLList类中找到的方法时,我收到编译器错误,说它无法找到该方法。

2 个答案:

答案 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<>();代替