这篇文章给大家介绍Java中如何使用三元表达式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
代码示意如下:
Integer itemVO = null; Integer globleLatenessToleranceUseAlternate = null; Integer latenessToleranceUseAlternate = (itemVO == null ? globleLatenessToleranceUseAlternate : itemVO.intValue());
从上面代码可以看出:当itemVO不为空时,就取itemVO的值;否则,就取globleLatenessToleranceUseAlternate的值。
但问题就在globleLatenessToleranceUseAlternate。当itemVO为空时,如果取globleLatenessToleranceUseAlternate,并不会得到值null, 而是Java会把globleLatenessToleranceUseAlternate进行一个自动开箱拆箱处理。简言之,取得是 globleLatenessToleranceUseAlternate.intValue(), 此时,因为globleLatenessToleranceUseAlternate 本身是 null,因此 globleLatenessToleranceUseAlternate.intValue() 导致了空指针因此。
修改如下解决:
Integer itemVO = null; Integer globleLatenessToleranceUseAlternate = null; Integer latenessToleranceUseAlternate; if (itemVO != null) { latenessToleranceUseAlternate = itemVO.intValue(); } else { latenessToleranceUseAlternate = globleLatenessToleranceUseAlternate; }
值得注意的是,在新版的JDK和Eclipse中,会做出友好的提示,从而能够有效规避上述问题。提示如下:
Null pointer access: This expression of type Integer is null but requires auto-unboxing
关于Java中如何使用三元表达式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。