Null Point Exception in Java
在这段代码中,我遇到了一个奇怪的问题,当我使用第一个if条件执行代码时,一切都很好,而且非常出色。但是,当我注释if语句并使用另一个if条件(已经注释的条件)时,它给出了npe。getUserIP()和getPhoneNumber()都只是私有字符串的普通getter。这两个值都是由普通的设置器预先设置的。你知道为什么会这样吗?谢谢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | public void sendBroadcast(final String broadcast) { System.out.println("entered sendBroadcast"); String fullPeep=broadcast; System.out.println("fullPeep:"+fullPeep); String array[] = fullPeep.split("<!!>"); for(User tempUser: friends) { if(tempUser.getUserIP().equals(this.getUserIP())) { System.out.println("tempuser:" +tempUser.getPhoneNumber() +" user:"+array[1] ); //if(tempUser.getPhoneNumber().equals(array[1])) //{ System.out.println("tempuser:" +tempUser.getPhoneNumber() +" user:"+array[1] ); System.out.println("if statemnt of broadcast method"); try { DataOutputStream out2= new DataOutputStream(socket.getOutputStream()); out2=tempUser.getUserDataOutputStream(); out2.writeUTF(fullPeep+" "); out2.flush(); } catch (IOException e) { e.printStackTrace(); } } //} } } Exception in thread"Thread-6" java.lang.NullPointerException at User.sendBroadcast(User.java:180) at Server$ServerThread.run(Server.java:394) |
编辑:我发现了导致异常的原因,以及为什么tempuser.getPhoneNumber()在某个时刻返回空值。谢谢大家。
变化:
1 | if(tempUser.getPhoneNumber().equals(array[1])) |
到:
1 | if(java.util.Objects.equals(tempUser.getPhoneNumber(), array[1])) |