Java中替换对象属性值易出现错误

Posted web小菜鸟ing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中替换对象属性值易出现错误相关的知识,希望对你有一定的参考价值。

在项目中,需要对某个对象的某个值进行判断,并替换成别的值,一开始代码如下所示

if(tranIO.getDevice().equals("W"))
        tranIO.setDevice("终端窗口");
else if(tranIO.getDevice().equals("P"))
	tranIO.setDevice("打印机");
else if(tranIO.getDevice().equals("M"))
	tranIO.setDevice("磁条读写器");
else if(tranIO.getDevice()==null)
        tranIO.setDevice("");

 这里会造成一个 不容易发现的
错误就是 

当传进来的tranIO对象的device值为null时,系统会报错

原因在于,如果先按照这样的顺序执行

tranIO.getDevice().equals("W")
这段代码执行顺序就变成了

tranIO.getDevice()
然后再执行.equals("W")

 其实就是相当于执行 

null.equals("W")
这样当然会报错了


所以,修改成以下的方式就能够成功

if(tranIO.getDevice()==null)
	tranIO.setDevice("");
else if(tranIO.getDevice().equals("W"))
	tranIO.setDevice("终端窗口");
else if(tranIO.getDevice().equals("P"))
	tranIO.setDevice("打印机");
else if(tranIO.getDevice().equals("M"))
	tranIO.setDevice("磁条读写器");

先执行判断null,如果为null,赋值,并结束下面判断,即可

以上是关于Java中替换对象属性值易出现错误的主要内容,如果未能解决你的问题,请参考以下文章

java lsit集合数据替换问题

Java String::replaceAll 只替换第一次出现的内容(可能是错误的regex)

如何在另一个文本输入中获取选定的文本。出现错误“'ScreenManager' 对象没有属性 'widget_1'”

Win7添加windows功能时提示“出现错误,并非所有的功能被成功更改”

出现错误AttributeError:'_tkinter.tkapp'对象没有属性'getitems'

出现错误:“int”对象没有属性“isnumeric”