java - 装箱的值被取消装箱,然后立即重新装箱

标签 java findbugs autoboxing

我收到 Findugs 错误“一个装箱的值被取消装箱,然后立即重新装箱”。

这是代码:

Employee emp = new Employee()
Long lmt = 123L;

emp.setLimit(Long.valueOf(lmt)); 

在此,员工 limit字段的类型为 Long .你能告诉我是什么错误吗?

最佳答案

问题是您正在转换 Long -> long -> Long .

所以在后台:

  • Long.valueOf(lmt)转换 Longlong
  • emp.setLimit(<long>);转换 longLong再次

  • 从 Java 5 自动装箱开始 => 你的代码应该是这样的:
    Employee emp = new Employee()
    Long lmt = 123L;
    
    emp.setLimit(lmt); 
    

    甚至:
    Employee emp = new Employee()
    long lmt = 123L;
    
    emp.setLimit(lmt); 
    

    关于java - 装箱的值被取消装箱,然后立即重新装箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066682/

    相关文章:

    java - 使用原语及其包装器的方法重载

    java - 自动装箱:所以我可以写:Integer i = 0;而不是:整数 i = 新整数(0);

    java - 构建应用程序时运行单元测试 (Android)

    java - Gradle 应用程序插件在运行应用程序时卡在 96%?

    java - 为什么这个 FindBugs 警告没有被抑制?

    java - FindBugs 排除过滤器的问题

    eclipse - 如何在Eclipse中配置Findbugs插件?

    java - 为什么将字段从 int 更改为 Integer 会导致对象从 Set 中消失?

    java - Android显示结果一一对应

    java - MySQL utf-8 与 json 的问题