0 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);
}
}
Run Code Online (Sandbox Code Playgroud)
public class Ethernet {
Run Code Online (Sandbox Code Playgroud)
public Computer terminal1, terminal2;
public int volume;
public Ethernet(Computer term, Server term2)
{
this.terminal1 = term;
this.terminal2 = (Computer) term2;
if(term != null)
{
term.addPort(this);
}
if(term2 != null)
{
term2.addPort(this);
}
}
}
import java.util.Vector;
public class Server extends Computer{
public Vector<Ethernet> etherPort;
public void addPort(Ethernet t)
{
this.etherPort.addElement(t);
}
}
Run Code Online (Sandbox Code Playgroud)
public class Ethernet {
Run Code Online (Sandbox Code Playgroud)
public Computer terminal1, terminal2;
public int volume;
public Ethernet(Computer term, Server term2)
{
this.terminal1 = term;
this.terminal2 = (Computer) term2;
if(term != null)
{
term.addPort(this);
}
if(term2 != null)
{
term2.addPort(this);
}
}
}
import java.util.Vector;
public class Server extends Computer{
public Vector<Ethernet> etherPort;
public void addPort(Ethernet t)
{
this.etherPort.addElement(t);
}
}
Run Code Online (Sandbox Code Playgroud)
glm*_*ndr 10
您需要实例化etherPort成员:
public class Server extends Computer{
public Vector<Ethernet> etherPort = new Vector<Ethernet>();
public void addPort(Ethernet t)
{
this.etherPort.addElement(t);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,您应该确保addPort()不会覆盖从您的计算机构造函数调用的方法.鉴于上下文,我认为它是安全的(即计算机没有addPort()方法).
如下面评论中所述,通常最好使用不限制容器实现的接口:您最好将etherPort声明为
List<Ethernet>
Run Code Online (Sandbox Code Playgroud)
代替
Vector<Ethernet>
Run Code Online (Sandbox Code Playgroud)
并使用etherPort.add(element)代替Vector特定的addElement方法.