我目前正在开发一个需要与commport上连接的设备进行通信的项目。我在下面有一个函数搜索串行端口,将它们添加到散列映射然后返回散列映射。我注意到一个问题,每当我尝试从HashMap中获取某些东西时,它会给出java.lang.nullPointerException
我是否试图从地图中错误地获取端口?如果我需要发布更多代码,请告诉我。
private Enumeration ports = null;
public HashMap<String, CommPortIdentifier> searchForPorts() {
ports = CommPortIdentifier.getPortIdentifiers();
while (ports.hasMoreElements()) {
CommPortIdentifier curPort = (CommPortIdentifier) ports.nextElement();
if (curPort.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println("Adding: " + curPort.getName() + "-" + curPort);
portMap.put(curPort.getName(), curPort);
System.out.println(portMap.get(curPort.getName())); //works: prints out gnu.io.CommPortIdentifier@9f116cc
}
}
log.fine("Successfully looked for ports");
Iterator it = portMap.entrySet().iterator();
String s="";
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
s = pair.getKey().toString();
System.out.println(s); //prints out COM24 like it should
it.remove();
}
System.out.println(portMap.get(s)); //Prints out null??
return portMap;
}
此代码的部分内容取自here。