我在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 {
答案 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);
}
}