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建议这样做