Java 返回类型与LinkedList不兼容<;T>;
Eclipse在我重写的继承方法上给了我一个返回类型不兼容的错误 我有一个泛型SomeQueue类,它扩展了LinkedList并实现了一个泛型SomeList类。这是我的泛型SomeList类Java 返回类型与LinkedList不兼容<;T>;,java,inheritance,interface,overriding,Java,Inheritance,Interface,Overriding,Eclipse在我重写的继承方法上给了我一个返回类型不兼容的错误 我有一个泛型SomeQueue类,它扩展了LinkedList并实现了一个泛型SomeList类。这是我的泛型SomeList类 public abstract class SomeQueue<T> extends LinkedList<T> implements SomeList<T>{ private int capacity=100; public SomeQueue(){ super(
public abstract class SomeQueue<T> extends LinkedList<T> implements SomeList<T>{
private int capacity=100;
public SomeQueue(){
super();
Queue<E> tqueue=new LinkedList<T>();
T front=null;
T back=null;}
@Override
public boolean isEmpty(){}
@Override
public E get(int index){}
@Override
public int size(){}
@Override
public void add(T thing){}
@Override
public E removeEnd(){}
@Override
public void addFirst(T thing){}
@Override
public T remove(int index){}
}
公共抽象类SomeQueue扩展LinkedList实现SomeList{
私人int容量=100;
公共队列(){
超级();
队列tqueue=新链接列表();
T front=null;
T back=null;}
@凌驾
公共布尔值isEmpty(){}
@凌驾
公共E get(int索引){}
@凌驾
公共整数大小(){}
@凌驾
公共void add(T thing){}
@凌驾
公共E removeEnd(){}
@凌驾
第一件事{}
@凌驾
公共T删除(int索引){}
}
这是我的SomeList界面
public interface SomeList<T>{
public boolean isEmpty();
public T get(int index);
public int size();
public void add(T item);
public T removeEnd();
public void addFirst(T thing);
public T remove(int index);}
公共接口列表{
公共布尔值为空();
公共T-get(int-index);
公共整数大小();
公共作废新增(T项);
公共T removeEnd();
公共利益优先;
公共T删除(int索引);}
Eclipse在QueueLis
类中的add(T thing)
方法上给了我一个错误。
这清楚地表明
返回类型与LinkedList不兼容。添加(T)
并建议将返回类型更改为boolean,我不想这样做。SomeQueue中的
@add(T thing)
方法上方的@Override
似乎不起作用。出现此错误是因为扩展/实现类有两个具有相同名称和参数类型(签名)以及不同返回类型的方法。在这种情况下,编译器特别抱怨add(T)
方法
您的LinkedStack
类可能正在扩展LinkedList
,因此它的boolean add(T)
方法。继承自SomeList
并在SomeQueue
中重写的void add(T)
方法与LinkedList
中的方法不兼容,因为它们具有不同的返回类型(以及相同的名称和参数)
简而言之,当您调用SomeQueue.add(T)
时,编译器不知道您是要调用返回boolean
的方法还是要调用返回int
的方法
换句话说,当您定义void add(T)
时,@Override
与LinkedList.add(T)
不匹配(它返回一个boolean
),如果您让它返回一个boolean
,那么@Override
将不匹配SomeList.add(T)
,它必须返回void
作为旁注,通过让类实现SomeList
和扩展LinkedList
,而不定义add
方法:
public abstract class SomeQueue<T>
extends LinkedStack<T>
implements SomeList<T>{ /* Empty class definition */ }
公共抽象类SomeQueue
扩展LinkedStack
实现SomeList{/*空类定义*/}
,编译器应该已经给出了一个错误,如下所示
返回类型与继承的方法LinkedStack.add(E)、LinkedList.add(E)不兼容
你确实应该考虑如果你需要在代码< > Soelistist< /Co>接口(你也可以改变它的名字),并且如果你真的需要它,那么就把你的类与整个层次分开。
相关问题:您应该始终发布堆栈跟踪的相关部分。我的错是,当我从未看到堆栈跟踪时,我只是掩饰了一下。最近有太多的问题,本来可以很容易地回答,否则!