帮助Java中的空指针异常

时间:2009-06-10 13:31:50

标签: java

我在java中组建了一个简单的模拟网络,我可以在其中添加计算机,服务器,并使用以太网端口连接两个对象。这是抛出空指针异常的地方,当我调用“this.etherPort.addElement(t);”

import java.util.Vector;

public class Server extends Computer{

     public Vector<Ethernet> etherPort; 

     public void addPort(Ethernet t)
  {
   this.etherPort.addElement(t);
  }
}

import java.util.Vector; public class Server extends Computer{ public Vector<Ethernet> etherPort; public void addPort(Ethernet t) { this.etherPort.addElement(t); } }

当我使用以下代码创建新的以太网对象时,将运行此代码:

public class Ethernet {

3 个答案:

答案 0 :(得分:10)

您需要实例化您的etherPort成员:

public class Server extends Computer{

     public Vector<Ethernet> etherPort = new Vector<Ethernet>(); 

     public void addPort(Ethernet t)
     {
        this.etherPort.addElement(t);
     }
}

但是,您应该确保addPort()不会覆盖从您的计算机构造函数调用的方法。鉴于上下文,我认为它是安全的(即。计算机没有addPort()方法)。

如下面评论中所述,使用不限制容器实现的接口通常更好:您最好将etherPort声明为

List<Ethernet> 

而不是

Vector<Ethernet>

并使用etherPort.add(element)代替Vector特定的addElement方法。

答案 1 :(得分:3)

您没有初始化矢量。应该是:

public Vector<Ethernet> etherPort = new Vector<Ethernet>();

答案 2 :(得分:2)

etherPort为null。您显然从未使用实际的Vector初始化它。我想你想要:

public class Server extends Computer{

     public Vector<Ethernet> etherPort; 

     public Server()
     {
        etherPort = new Vector<Ethernet>();
     }

     public void addPort(Ethernet t)
     {
        this.etherPort.addElement(t);
     }
}