在第10行的Network类中,我正在创建一个TreeMap,然后为它提供Network device和Channel的值,以便将NetworkDevice添加到新的Channel ..
在Network类的第21行我正在创建一个名为AddDevice的方法,它接受一个NetworkDevice作为参数,因此这将是一个AccessPoint对象,因为AccessPoint扩展了NetworkDevice,并且此方法获取传入的NetworkDevice,然后添加它通过说join.put ...
来到TreeMap在网络中,我还创建了一个名为Channel
的私有字段 在NetworkDevice类中的我在第9行创建一个新对象
public void join(Network network){
network.addDevice(this);
}
以网络作为参数并调用其.addDevice方法添加其调用的设备,因此我尝试在我的main方法中测试:
accessPoint.join(network);
然而,当我尝试测试它时,这给了我一个空指针异常
我遇到这个例外的三个主要地方是从以下代码块中出现的:
在网络课程中我有
public class Network {
private TreeMap<NetworkDevice, Channel> join;
private Map<AccessPoint, Channel> records;
private static List<Channel> channels = new ArrayList<Channel>();
private Channel channel;
public Network(Channel channel){
this.channel = channel;
}
public void addDevice(NetworkDevice device){
channel = new Channel(0);
join.put(device, channel);
channels.add(channel);
}
}
在我的NetworkDevice类中,我有:
public class NetworkDevice {
protected String address;
protected Channel channel;
public void join(Network network){
network.addDevice(this);
}
}
我的主要课程仅用于测试目的,但确实返回了 空指针异常
public class Main {
public static void main(String[] args) {
Channel channel = new Channel(1);
Network network = new Network(channel);
AccessPoint accessPoint = new AccessPoint("168.0.0.1");
//Client client = new Client("192.1.1.1");
accessPoint.join(network);
}
}
我的输出和问题是:
Exception in thread "main" java.lang.NullPointerException
at Network.addDevice(Network.java:23)
at NetworkDevice.join(NetworkDevice.java:9)
at Main.main(Main.java:10)