自动装箱错误

Sri*_*san 4 java findbugs

FindBugs告诉我,我有以下错误:

原语被装箱,然后立即取消装箱.这可能是由于在需要未装箱值的地方进行手动装箱,因此迫使编译器立即撤消装箱的工作.

这是相关的代码:

...
String str= "10.0";
Double d = (str != null ? Double.valueOf(str) : new Double(0.0));
...
Run Code Online (Sandbox Code Playgroud)

这是什么意思,我该如何解决?

Jon*_*eet 5

看起来像FindBugs中的一个bug给我.如果您编译该代码然后javap -c在其上运行,它永远不会调用doubleValue()通常用于取消装箱的内容.

不可否认,您可能希望将缓存Double用于零,而不是每次执行时都分配一个缓存,但除此之外我认为合理...

我建议你向FindBugs团队报告.

编辑:在向FindBugs团队报告之前,我会用一个简短但完整的程序更新您的问题,该程序可以解决问题.我接受了你的话,你向我们展示的代码是FindBugs抱怨的代码.如果不是这样,那么所有的赌注都会关闭:)