【发布时间】:2019-12-19 04:12:04
【问题描述】:
我有一个名为SharedBoard 的对象,它是一个静态实体,所以我希望它被所有类共享。我有这个方法getBoard(),它返回SharedBoard对象;但是,当我尝试从另一个类调用此方法时,我总是得到一个NullPointerException。实际上,我什至无法通过这种方法打印板上的元素。我是否在某处遗漏了 OOP 概念?
public class Server {
private ServerSocket serverSocket;
private static SharedBoard board;
// The set of all the print writers for all the clients, used for broadcast.
private Set<PrintWriter> writers = new HashSet<>();
public Server(ServerSocket serverSocket) {
this.serverSocket = serverSocket;
Server.board = new SharedBoard();
}
public static SharedBoard getBoard() {
for(int i=0; i<9; i++)
System.out.println(board.moves[i]);
return board;
}
这是SharedBoard类/构造函数的部分:
public class SharedBoard {
private final Object lock = new Object();
int[] moves;
SharedBoard() {
moves = new int[9];
for(int i=0; i<9; i++)
moves[i] = 0;
}
.
.
.
}
【问题讨论】:
-
您的代码是否在任何地方创建了
Server对象?如果没有,则Server.board = new SharedBoard();行将不会运行,因此board仍将为空。 -
其实你是对的。我只是对服务器的引用。这就是为什么它不起作用谢谢你