0
我想將socket.getSocket()
和socketStatus.getSocketStatus()
存儲在HashMap
中。但hMap.put(socket.getSocket(),socketStatus.getSocketStatus());
會拋出一個NullPointerException
。我該如何解決這個問題?將兩個枚舉值存儲在HashMap中
下面是我的兩個類:
SocketInfoMap.java
package vd.socket.map;
import java.util.HashMap;
import java.util.Map;
public class SocketInfoMap {
public enum Socket {
ONE("01"), TWO("02"), THREE("03"), FOUR("04"), FIVE("05"), SIX("06"), SEVEN("07"), EIGHT("08");
private static Map<Socket, String> sMap = new HashMap<Socket, String>();
private String socket;
private Socket(String socket) {
this.socket = socket;
}
public String getSocket() {
return socket;
}
static {
for (Socket socket : Socket.values()) {
sMap.put(socket, socket.getSocket());
}
}
}
public enum SocketStatus {
LIFTED(1), NOT_LIFTED(0);
private static Map<SocketStatus, Integer> stMap = new HashMap<SocketStatus, Integer>();
private int socketStatus;
private SocketStatus(int socketStatus) {
this.socketStatus = socketStatus;
}
public int getSocketStatus() {
return socketStatus;
}
static {
for (SocketStatus socketStatus : SocketStatus.values()) {
stMap.put(socketStatus, socketStatus.getSocketStatus());
}
}
}
private static Map<String, Integer> hMap = new HashMap<String, Integer>();
public SocketInfoMap(Map<String, Integer> hMap) {
SocketInfoMap.hMap = hMap;
}
public Map<String, Integer> gethMap() {
return hMap;
}
}
SocketMapTest.java
package vd.socket.map;
import java.util.Map;
import vd.socket.map.SocketInfoMap.*;
public class SocketMapTest {
private static Map<String, Integer> hMap;
public static void main(String[] args) {
SocketStatus socketStatus = SocketStatus.LIFTED;
Socket socket = Socket.TWO;
if ((socket == Socket.TWO) && (socketStatus == SocketStatus.LIFTED)) {
hMap.put(socket.getSocket(), socketStatus.getSocketStatus());
System.out.println(hMap);
} else
hMap.put(socket.getSocket(), socketStatus.getSocketStatus());
System.out.println(hMap);
}
}
它看起來並不像你初始化'hMap'在'main',比如'HMAP =新地圖<字符串,Integer>的()'。你是否在使用IDE,比如Eclipse?如果不是,你應該通過這樣的瑣碎錯誤來幫助你。 –
順便說一句,'System.out.println(hMap)'不會輸出'Map'的內容,它會輸出*內存位置*,你應該Google如何輸出一個集合的內容。 –
謝謝Jonny Henly –