首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >装箱值,取消装箱,然后重新装箱

装箱值,取消装箱,然后重新装箱
EN

Stack Overflow用户
提问于 2015-08-17 04:46:29
回答 2查看 5.8K关注 0票数 15

FindBugs向我发出了关于以下行的警告,其中invoiceNumberInteger对象:

代码语言:javascript
运行
复制
text.append(String.format("%010d-", (invoiceNumber == null) ? 0 : invoiceNumber));

警告是:“取消装箱值,然后立即重新装箱”。

现在我想我懂拳击了,但是我看不出你在没有得到警告的情况下怎么做同样的事情?

我发现可以使用以下代码来消除警告,但这似乎更长:

代码语言:javascript
运行
复制
int invNo = (invoiceNumber == null) ? 0 : invoiceNumber;
text.append(String.format("%010d-", invNo));

有人能告诉我做上述事情的正确方法是什么吗?

顺便说一句,我已经看过相关的问题了,我明白它们是怎么回事,但这似乎不符合其中的任何一个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-17 04:54:27

(invoiceNumber == null) ? 0 : invoiceNumber)表达式的类型是int。在invoiceNumber不是null的情况下,它需要取消对null的装箱。

另一方面,String.format需要一个单独的String参数,后面跟着Object引用,这意味着您的int立即再次被装箱到Integer

您可以尝试使用(invoiceNumber == null) ? Integer.valueOf(0) : invoiceNumber)来避免原始的取消装箱,这将使这个表达式返回一个Integer

票数 25
EN

Stack Overflow用户

发布于 2015-08-17 04:48:34

尝试将(invoiceNumber == null) ? 0 : invoiceNumber更改为(invoiceNumber == null) ? 0 : invoiceNumber.intValue()。我认为警告来自您在“假”情况下再次使用Integer,而不是int

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32042957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档