Java自定义泛型列表:add()方法错误
我有一个任务,其中我必须为自定义泛型列表实现一个Java自定义泛型列表:add()方法错误,java,generics,Java,Generics,我有一个任务,其中我必须为自定义泛型列表实现一个add()方法。在我的代码中,我有以下结构: public abstract class MyGenericListAbstract<T> { protected transient T head; protected transient T tail; protected transient int size; ... } public final class MyEmptyList<T>
add()
方法。在我的代码中,我有以下结构:
public abstract class MyGenericListAbstract<T> {
protected transient T head;
protected transient T tail;
protected transient int size;
...
}
public final class MyEmptyList<T> extends MyGenericListAbstract {
private T[] list;
...
public final void add(T e)
{
this.getList()[this.size()] = (T) e;
}
...
private T[] getList()
{
return this.list;
}
公共抽象类MyGenericListAbstract{
保护瞬态T形头;
保护瞬态T尾;
受保护的瞬态整数大小;
...
}
公共最终类MyEmptyList扩展了MyGenericListAbstract{
私人T[]名单;
...
公共最终无效添加(TE)
{
this.getList()[this.size()]=(T)e;
}
...
私有T[]getList()
{
返回此.list;
}
}
目前的问题是,当我尝试这样做时:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
MyGenericListAbstract <Integer> list0 = new MyEmptyList();
list0.add(new Integer(3));
}
}
公共类主{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
MyGenericListAbstractList0=新的MyEmptyList();
list0.add(新的整数(3));
}
}
我得到以下错误:
我不明白为什么
有人能帮我吗
完整的代码是可用的,还有一些关于任务的文档。如果你发现了一些缺点,我会很高兴听到的
谢谢 您在
list0
中持有对MyGenericListAbstract
的引用,而它没有add
方法,正如您之前在评论中所说的那样。编译器没有看到基于列表引用的方法
您应该将引用类型更改为MyEmptyList
,或者将add(te)
方法移动到MyGenericListAbstract
类
问题与泛型无关,它只是基本的Java继承原则。好吧,
MyGenericListAbstract
是否有一个add
方法?这很不幸,一开始就是:公共最终类MyEmptyList扩展了MyGenericListAbstract
。这是使用原始类型MyGenericListAbstract
。尝试公共最终类MyEmptyList扩展MyGenericListAbstract
。同样,您可能应该使用MyGenericListAbstractList0=new MyEmptyList()代码>。尽可能避免使用原始类型。@SotiriosDelimanolis不,它不会,你为什么要做(T)e
而e
已经是T
的一种类型了?@Braj NetBeans建议这样做