Java 返回类型与LinkedList不兼容<;T>;

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(

Eclipse在我重写的继承方法上给了我一个返回类型不兼容的错误

我有一个泛型SomeQueue类,它扩展了LinkedList并实现了一个泛型SomeList类。这是我的泛型SomeList类

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>接口(你也可以改变它的名字),并且如果你真的需要它,那么就把你的类与整个层次分开。


相关问题:

您应该始终发布堆栈跟踪的相关部分。我的错是,当我从未看到堆栈跟踪时,我只是掩饰了一下。最近有太多的问题,本来可以很容易地回答,否则!