【findBugs】findBugs对Integer.valueOf()的报错一类不必要的装箱转换

版权声明:本文为博主原创文章,基于学习目的非盈利可以转载,表明出处即可。 https://blog.csdn.net/qq_37192800/article/details/82017526

findBugs工具警告的,一类不必要的装箱转换:

“Boxing/unboxing to parse a primitive”, A boxed primitive is created from a String, just to extract the unboxed primitive value. It is more efficient to just call the static parseXXX method

“用于基本类型的装箱/拆箱”,把String解析成基本类型的包装类,如果只是为了获得String的数值大小。调用静态parseXXX方法更有效


例子:

int projectNumber = Integer.valueOf(strNumber) 

Integer.valueOf返回一个Integer,而不是一个int,但是projectNumber变量期望获得一个int值。Findbugs警告你,你正在做一个“漫长”的装箱拆箱操作,涉及潜在地创建一个Integer实例,多余的对象,然后通过传递这个Integer对象再拆箱获得值,例如:

String => int => Integer => int
         ----------------
                \ ---这是在Integer.valueOf中

既然是想得到值,直接从String -> int就好了。

String => int
--------------
      \ --- Integer.parseInt

修改后的代码:int projectNumber = Integer.parseInt(strNumber) 

解决的问题

没有必要进行临时Integer和潜在的内存分配。
如果是Integer projectNumber = Integer.valueOf(strNumber),就没有警告,因为这Integer对象正是你想传递给projectNumber实例。

阅读更多
换一批

没有更多推荐了,返回首页