Java泛型NullPointerException

Java泛型NullPointerException,java,generics,nullpointerexception,Java,Generics,Nullpointerexception,我想使用泛型创建一个通用堆栈 public class UniversalStack<E> implements StackInterface<E> { private E[] stack; private int dim; private int index; @SuppressWarnings("unused") public UniversalStack(int dim) { this.dim=di

我想使用泛型创建一个通用堆栈

public class UniversalStack<E> implements StackInterface<E> {

    private E[] stack;
    private int dim;
    private int index;

    @SuppressWarnings("unused")
    public UniversalStack(int dim)
    {
        this.dim=dim;
        this.index=0;
        @SuppressWarnings("unchecked")
        E[] stack = (E[]) new Object[dim];


    }

    @Override
    public void push(E el) {
        // TODO Auto-generated method stub
        if(index+1<dim)
        {
            stack[index] = el;
            index=index+1;
        }

    }
}

你能解释一下我做错了什么吗?如果我犯了一个愚蠢的错误,不要对我苛刻,我是一个初学者,所以我真的知道的不多

您正在构造函数中声明
堆栈
,而不是分配给外部
堆栈

E[] stack = (E[]) new Object[dim];
应该是

stack = (E[]) new Object[dim];

因此,
堆栈
推送

中使用时为空,您在构造函数中声明
堆栈
,而不是分配给外部
堆栈

E[] stack = (E[]) new Object[dim];
应该是

stack = (E[]) new Object[dim];

因此,
stack
push
中使用时为空,只需使用已经存在于Java中的stack类即可

Stack<Integer> stack = new Stack<Integer>();
Stack Stack=新堆栈();

这里有更多文档

只需使用已经存在的Java堆栈类即可

Stack<Integer> stack = new Stack<Integer>();
Stack Stack=新堆栈();

这里有更多的文档

是的,就是这样。。直到我在这里发布后再次阅读它,我才意识到我重新声明了堆栈成员。谢谢我认为eclipse试图警告您,但您添加了suppresswarnings注释:-)是的,就是这样。。直到我在这里发布后再次阅读它,我才意识到我重新声明了堆栈成员。谢谢我认为eclipse试图警告您,但您添加了suppresswarnings注释:-)我很困惑,为什么这需要一个-1?他试图使用堆栈,我建议他使用已经存在的堆栈实现?使用现有的、经过验证的和真实的东西似乎比编写自己的东西更好……我很困惑,为什么这需要a-1?他试图使用堆栈,我建议他使用已经存在的堆栈实现?使用现有的、经过验证的、真实的东西似乎比写自己的东西更好。。。。