有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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);
  }
}

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

public class Ethernet {

公共计算机终端1、终端2; 公共int卷; 公共以太网(计算机术语、服务器术语2) { 这terminal1=术语; 这终端2=(计算机)终端2; 如果(术语!=null) { 学期地址端口(本); } 如果(term2!=null) { 第2条。地址端口(本); } } }


共 (3) 个答案

  1. # 1 楼答案

    你没有初始化向量。应该是:

    public Vector<Ethernet> etherPort = new Vector<Ethernet>();
    
  2. # 2 楼答案

    以太端口为空。显然,您从未使用实际向量初始化它。我想你想要:

    public class Server extends Computer{
    
         public Vector<Ethernet> etherPort; 
    
         public Server()
         {
            etherPort = new Vector<Ethernet>();
         }
    
         public void addPort(Ethernet t)
         {
            this.etherPort.addElement(t);
         }
    }
    
  3. # 3 楼答案

    您需要实例化您的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>
    

    并使用以太端口。添加(元素),而不是特定于向量的添加元素方法