Teo*_*Teo 1 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=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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
一切都成功编译.当我调用以下内容时会出现问题:
UniversalStack<Integer> integerStack = new UniversalStack<>(10);
integerStack.push(new Integer(1));
Run Code Online (Sandbox Code Playgroud)
我明白了
Exception in thread "main" java.lang.NullPointerException
at com.java.lab4.UniversalStack.push(UniversalStack.java:41)
at com.java.lab4.testStack.main(testStack.java:14)
Run Code Online (Sandbox Code Playgroud)
你能解释一下我做错了什么吗?如果我犯了一个愚蠢的错误,不要对我很苛刻,我是初学者,所以我真的不太懂.
您在stack构造函数中重新声明而不是分配给外部stack:
E[] stack = (E[]) new Object[dim];
Run Code Online (Sandbox Code Playgroud)
应该
stack = (E[]) new Object[dim];
Run Code Online (Sandbox Code Playgroud)
因此stack在使用时为null push.
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |