2015-10-19 65 views
0

我有一个List接口以及一个实现List的SLList类。我有另一个类ListIterator,它使用SLList来实例化一个对象,如下所示:我不能调用扩展我的List接口的类的方法

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

这部分是好的。但是,当我尝试调用仅在SLList类中找到的方法时,出现编译器错误,说它无法找到该方法。

+3

这与泛型有什么关系?这看起来更像是一个调用父类中不存在的子类中的方法的问题。 –

+0

Idk,我认为这可能是一个泛型的问题,但你是对的。 – user5362867

回答

2

如果你想打电话从SLList的方法,该变量的声明需要是SLList类型:

SLList<E> list = new SLList<>(); //this is what I mean 

对于(左边部分)编译器只声明的类型事项

+0

没问题。该方法只存在于SSList类中。由于您将其设置为List界面,因此该方法将不可用。 – Dale

+0

好吧,明白了。谢谢! – user5362867

+0

你应该接受一个适合你的答案@ user5362867 –

2

所以你试图做这样的事情?

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

那么,在第二行的编译器仅知道名单是List<E>所以你不能调用任何本发明的方法在实施,这是不是接口的一部分。

我你想这样做,你要么

  • 创建一个新的接口,可能是从它包含了方法和用途,而不是List

  • 使用SLList<E> list = new SLList<>();代替

  • 该接口列表扩展
+0

我明白了。谢啦。 – user5362867