T-D*_*T-D -2 java nullpointerexception dataoutputstream
我在这段代码中遇到了一个奇怪的问题,当我使用第一个if条件执行代码时,它一切正常并且被视为已被删除.但是,当我评论if语句并使用另一个if条件(已经评论过的那个)时,它会给出NPE.getUserIP()和getPhoneNumber()都只是私有字符串的普通getter.并且两个值都是由普通的setter设置的.所以任何想法为什么会发生这种情况?谢谢.
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+"\n");
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)
Run Code Online (Sandbox Code Playgroud)
编辑:我弄清楚导致异常的原因以及为什么tempUser.getPhoneNumber()在某些时候返回null.谢谢大家.
更改:
if(tempUser.getPhoneNumber().equals(array[1]))
Run Code Online (Sandbox Code Playgroud)
至:
if(java.util.Objects.equals(tempUser.getPhoneNumber(), array[1]))
Run Code Online (Sandbox Code Playgroud)
Objects.equals 是空的安全,并不介意电话号码为空.
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |