【发布时间】:2012-09-22 18:20:43
【问题描述】:
首先,我在 Java 方面的经验很少。
回答我的问题,我正在用我自己的方法实现我自己的列表。
public class MyList<E> implements List<E>{
private Node<E> head;
private static class Node<E> {
private E element;
.....
}
现在,这个类中有一个方法可以将此列表与给定的列表进行比较:
public boolean equals(List<E> list){
....
}
要启动此方法,首先我们必须获取列表的头部,然后我可以访问元素并比较列表。
现在,我们没有 getHead() 方法。
因此,我们尝试在实现类中创建以下方法
public Node<E> getHead(){
编译器找不到符号。当然,我们需要先在接口中声明它。问题是,如果我们尝试这样做,接口不知道 Node 是什么。 所以我在这里陷入僵局。
我得到错误:
Cannot find symbol
symbol : method getHead()
location: interface List<E>
Node<E> lhead = list.getHead();
我希望它使 getHead 成为特定于实现的方法。我怎么做?
请问,可以把implementation中的internal class移到interface中吗? 不知道如何解决这个问题,
感谢您的宝贵时间
【问题讨论】:
-
你想把那个方法放在哪里?对我来说编译得很好
-
为什么
getHead()不返回E? -
@MattBall 什么?
head是Node<E>的一个实例,所以getHead应该返回Node<E>,不是吗? -
@Alex Coleman 我试图把它放在实现类中。问题是,当我使用 getHead 时,它说找不到符号。
-
public boolean equals(List<E> list){通常 equals 方法看起来不是那样的。参数类型为Object。它重载了方法public boolean equals(Object object){。尝试使用@Override注释。
标签: java methods interface implementation