20130731 浅谈空指针与传参
最近一直在写客户机与服务器,过程中遇到了很多问题,其中空指针和传参问题一直存在。之前只是有一些这方面的想法,也没有形成书面上的总结,今天胡哥问起,自己就仔细想了一下在这过程中存在的问题,就趁热打铁,写了这篇总结。
对于空指针,以前只是停留在抽象的层面上,基本上没有自己去解决过空指针问题,只是知道该怎么去做,是怎样一个过程,完全是纸上谈兵。这次写通信,遇到了很多次空指针和传参问题,就趁此机会总结一下。
空指针,我这次出现空指针,很大一部分是和传参联系在一起的,大多数时候是因为参数没有传过来,出现空指针异常问题。
在写程序之前一定要头脑清醒,知道自己在做一些什么。一个类需要哪些参数,是需要传参,还是需要实例化,还是赋值时出了问题,赋值为null了等等问题。
这样就要一步一步进行检查,顺藤而上,逐步检查是哪一个部分出了问题。
下面是客户机从服务器中读取消息的部分,在将服务器发来的消息显示出来时一直报空指针:
/**
* 从服务器中读取消息,这个方法会阻塞,必须在独立线程中
*/
public void readFromServer(){
String inputs;
try {
BufferedReader brd = new BufferedReader(new InputStreamReader(ins));
//逐行读取服务器中发来的消息
inputs = brd.readLine();
System.out.println("服务器中发来的inputs为:"+inputs);
while (!inputs.equals("exit")){
System.out.println("服务器发来消息:"+inputs);
jte.append("服务器发来消息:"+inputs+"\r\n");
inputs = brd.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
逐步检查后才发现,虽然将jte 传过来了,但是在之前jte的值是空的。
从这次练习,我学到了很多:在大处需要细心,在小的地方更要细心;做任何事情之前一定要有清晰的思路;要不时的回头看看自己做了一些什么东西,中间出现了一些什么问题,要及时的做一些回顾与总结。