使用 @SuppressWarnings("unchecked") 时的性能考虑

uribeb930

我希望你很好。

这篇文章是关于在检索数据库信息时使用 @SuppressWarnings("unchecked") 时的性能考虑。我带着一个问题向我公司的领导提出了问题,这似乎是灰色地带。示例如下。

场景一:

public List<BusinessObject> retrieveInformation(Long id){
    List<? extends Object> info = persistenceService.get("namedQuery", params, values);
    //... cast the contents one by one to List<BusinessObject> and return
}

场景2:

public List<BusinessObject> retrieveInformation(Long id){
    List<?> info = persistenceService.get("namedQuery", params, values);
    //... cast the contents one by one to List<BusinessObject> and return
}

场景3:

public List<BusinessObject> retrieveInformation(Long id){
    List<BusinessObject> info = (List<BusinessObject>)persistenceService.get("namedQuery", params, values);
    //... return the List<BusinessObject>
}

场景 4:

@SuppressWarnings("unchecked") 
public List<BusinessObject> retrieveInformation(Long id){
    List<BusinessObject> info = persistenceService.get("namedQuery", params, values);
    //... return the List<BusinessObject>
}

当然,有很多方法可以做到这一点,但我关心的是一种以最佳性能执行此过程的方法。因此,我们需要考虑到在检索信息时,我们可能会在查询中出现错误,并且会出现异常;此外,如果没有这样的错误,我们已经知道将要检索的对象的类型。

所以,从一个大的商业项目的角度考虑这个问题,所有的组件都到位,比如休眠层、DAO 和 DTO,请你帮我确定:

  1. 具有最佳性能考虑的一种选择。
  2. 如果@SuppressWarnings("unchecked") 注释有性能考虑。
  3. 如果摆脱 @SuppressWarnings("unchecked") 在这个范围内是一个很好的做法。

祝你今天过得愉快。

斯蒂芬·C

据我所知,@SuppressWarnings注释对性能没有影响。它们不会实质性地改变生成的字节码。

字节码编译器应省略源代码中不必要的类型转换,但编译器将包括确保运行时类型安全所需的任何类型转换,而不管警告1 是否被抑制

此外,如果(假设)编译器确实插入了一些不是绝对必要的类型转换字节码,它们应该由 JIT 编译器优化掉。


但是,最好编写您的代码,这样您就不需要使用@SuppressWarnings注释。问题是注释可以隐藏代码中的逻辑错误;即警告可能是真实的。如果没有被彻底的单元集成测试检测到,这些可能会导致意外的运行时错误。


1 - 如果编译器没有这样做,那么字节码在被 JVM 加载时将无法通过验证。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 unchecked 时 if 语句出错

来自分类Dev

似乎在编译期间未考虑@SuppressWarnings

来自分类Dev

似乎在编译过程中未考虑@SuppressWarnings

来自分类Dev

解决Java中的“未经检查的警告”,避免使用@suppressWarnings

来自分类Dev

如何配置ProGuard以使用SuppressWarnings(“ unused”)省略方法

来自分类Dev

将@SuppressWarnings与声纳checkstyle插件一起使用

来自分类Dev

考虑到性能,我应该使用.blank吗?

来自分类Dev

考虑到性能,我应该使用`.blank?`吗?

来自分类Dev

将对象强制转换为ArrayList <String []>时出现“警告:[unchecked] unchecked cast”

来自分类Dev

如果在我的java文件中使用了很多@SuppressWarnings,会发生什么情况?

来自分类Dev

使用变量时的查询性能

来自分类Dev

在SonarQube中损坏的@SuppressWarnings?

来自分类Dev

子类别的SuppressWarnings

来自分类Dev

Java中SuppressWarnings的用法

来自分类Dev

jsp文件中的SuppressWarnings

来自分类Dev

如何摆脱@SuppressWarnings标记?

来自分类Dev

如何使用实体框架获取表中的最新行(考虑性能)?

来自分类Dev

截至2014年6月,应该考虑使用哪些工具来提高Python代码的性能?

来自分类Dev

如何使用实体框架获取表中的最新行(考虑性能)?

来自分类Dev

如何在考虑性能的情况下如何将XML,JSON与MYSQL DB混合使用

来自分类Dev

@SuppressWarnings(“ deprecation”)可以适用于不推荐使用的接口,而不适用于整个类吗?

来自分类Dev

开始考虑在Ubuntu启动时使用Sphinx

来自分类Dev

使用Date#to_time方法时如何考虑时区

来自分类Dev

考虑重复项时使用限制的 SQL 查询

来自分类Dev

使用jbcrypt时的可变性能和降级性能

来自分类Dev

使用-Xlint:unchecked重新编译我的代码。使用-Xlint重新编译后,出现unchecked的呼叫警告。我现在如何运行程序?

来自分类Dev

使用OR时,MYSQL可提高查询性能

来自分类Dev

使用日期和&&时的性能问题

来自分类Dev

在Select LIKE中使用通配符%时的性能

Related 相关文章

  1. 1

    使用 unchecked 时 if 语句出错

  2. 2

    似乎在编译期间未考虑@SuppressWarnings

  3. 3

    似乎在编译过程中未考虑@SuppressWarnings

  4. 4

    解决Java中的“未经检查的警告”,避免使用@suppressWarnings

  5. 5

    如何配置ProGuard以使用SuppressWarnings(“ unused”)省略方法

  6. 6

    将@SuppressWarnings与声纳checkstyle插件一起使用

  7. 7

    考虑到性能,我应该使用.blank吗?

  8. 8

    考虑到性能,我应该使用`.blank?`吗?

  9. 9

    将对象强制转换为ArrayList <String []>时出现“警告:[unchecked] unchecked cast”

  10. 10

    如果在我的java文件中使用了很多@SuppressWarnings,会发生什么情况?

  11. 11

    使用变量时的查询性能

  12. 12

    在SonarQube中损坏的@SuppressWarnings?

  13. 13

    子类别的SuppressWarnings

  14. 14

    Java中SuppressWarnings的用法

  15. 15

    jsp文件中的SuppressWarnings

  16. 16

    如何摆脱@SuppressWarnings标记?

  17. 17

    如何使用实体框架获取表中的最新行(考虑性能)?

  18. 18

    截至2014年6月,应该考虑使用哪些工具来提高Python代码的性能?

  19. 19

    如何使用实体框架获取表中的最新行(考虑性能)?

  20. 20

    如何在考虑性能的情况下如何将XML,JSON与MYSQL DB混合使用

  21. 21

    @SuppressWarnings(“ deprecation”)可以适用于不推荐使用的接口,而不适用于整个类吗?

  22. 22

    开始考虑在Ubuntu启动时使用Sphinx

  23. 23

    使用Date#to_time方法时如何考虑时区

  24. 24

    考虑重复项时使用限制的 SQL 查询

  25. 25

    使用jbcrypt时的可变性能和降级性能

  26. 26

    使用-Xlint:unchecked重新编译我的代码。使用-Xlint重新编译后,出现unchecked的呼叫警告。我现在如何运行程序?

  27. 27

    使用OR时,MYSQL可提高查询性能

  28. 28

    使用日期和&&时的性能问题

  29. 29

    在Select LIKE中使用通配符%时的性能

热门标签

归档