Java 泛型 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;
}
}
}
一切编译成功。当我拨打以下电话时,问题就出现了:
UniversalStack<Integer> integerStack = new UniversalStack<>(10);
integerStack.push(new Integer(1));
我明白
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)
你能解释一下我做错了什么吗?如果我犯了一个愚蠢的错误,请不要对我严厉,我是一个初学者,所以我真的不太了解。
I want to make an Universal stack using generics .
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;
}
}
}
Everything compiles succesfully . The problem comes when I call the following :
UniversalStack<Integer> integerStack = new UniversalStack<>(10);
integerStack.push(new Integer(1));
I get
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)
Could you explain me what am I doing wrong ? If I made a stupid mistake don't be harsh on me , I am a beginner so I don't really know much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您在构造函数中重新声明
stack
而不是分配给外部stack
:应该
因此在
中使用时
。stack
为 null >推You're re-declaring
stack
within your constructor rather than assigning to the outerstack
:Should be
therefore
stack
is null when used inpush
.只需使用 Java 已有的堆栈类即可。
更多文档位于此处 http://docs.oracle.com /javase/6/docs/api/java/util/Stack.html
Just use the stack class that already exists for Java.
More documentation is here http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html