当前位置: 首页 > news >正文

南京做网站建设的公司排名wordpress条文件

南京做网站建设的公司排名,wordpress条文件,建企聘企业管理有限公司,会员卡管理系统哪里买java自动生成合同Java 7的try-with-resources语句和与该语句一起使用的AutoCloseable类型的一个不错的功能是#xff0c;静态代码分析工具可以检测到资源泄漏。 例如#xff0c;Eclipse#xff1a; 当您具有上述配置并尝试运行以下程序时#xff0c;您将收到三个警告… java自动生成合同 Java 7的try-with-resources语句和与该语句一起使用的AutoCloseable类型的一个不错的功能是静态代码分析工具可以检测到资源泄漏。 例如Eclipse 当您具有上述配置并尝试运行以下程序时您将收到三个警告 public static void main(String[] args) throws Exception {Connection c DriverManager.getConnection(jdbc:h2:~/test, sa, );Statement s c.createStatement();ResultSet r s.executeQuery(SELECT 1 1);r.next();System.out.println(r.getInt(1)); } 输出是琐碎的 2 警告在所有c s r上发出。 一种快速的解决方法不要这样做是使用Eclipse特定的SuppressWarnings参数抑制警告 SuppressWarnings(resource) public static void main(String[] args) throws Exception {... } 毕竟WeKnowWhatWeReDoing™这只是一个简单的示例对吧 错误 即使对于简单的示例至少在Java 7之后解决此问题的正确方法是使用轻松的try-with-resources语句。 public static void main(String[] args) throws Exception {try (Connection c DriverManager.getConnection(jdbc:h2:~/test, sa, );Statement s c.createStatement();ResultSet r s.executeQuery(SELECT 1 1)) {r.next();System.out.println(r.getInt(1));} } 实际上如果Eclipse可以自动修复此警告并将所有单独的语句包装在try-with-resources语句中那就太好了。 请支持此功能请求 Java 8处理了什么 在Java 8中 AutoCloseable上的约定已经非常微妙地更改或直率地更改了具体取决于您的观点。 Java 7版本 当不再需要时必须关闭的资源。 注意单词must 。 Java 8版本 在关闭之前可以保存资源例如文件或套接字句柄的对象。 当退出在资源规范头中已声明该对象的try-with-resources块时将自动调用AutoCloseable对象的close方法。 这种构造可确保及时释放避免资源耗尽异常和可能发生的错误。 API注意 即使不是所有的子类或实例都拥有可释放的资源基类也有可能并且实际上是常见的。 对于必须完全通用运行的代码或者对于已知AutoCloseable实例需要释放资源的代码建议使用try-with-resources构造。 但是当使用诸如Stream的工具同时支持基于I / O和基于非I / O的形式时使用非基于I / O的形式时通常不需要使用资源尝试块。 简而言之从Java 8开始 AutoCloseable更具暗示性表明您可能正在使用需要关闭的资源但这并非一定如此。 这类似于Iterable合同后者没有说明您只能在Iterable进行一次还是多次迭代但是它强加了foreach循环所需的合同。 我们什么时候拥有“可选的可关闭”资源 以jOOQ为例。 与JDBC不同jOOQ 查询 在jOOQ 3.7中被设置为AutoCloseable 可能表示资源也可能不表示资源这取决于您如何执行。 默认情况下它不是资源 try (Connection c DriverManager.getConnection(jdbc:h2:~/test, sa, )) {// No new resources created here:ResultQueryRecord query DSL.using(c).resultQuery(SELECT 1 1);// Resources created and closed immediatelySystem.out.println(query.fetch()); } 输出再次是 ---- | 2| ---- | 2| ---- 但是现在我们再次在query变量上出现了Eclipse警告说有一个资源需要关闭即使通过这种方式使用jOOQ我们知道事实并非如此。 上面的代码中唯一的资源是JDBC Connection 并且已正确处理。 jOOQ内部的jOOQ PreparedStatement和ResultSet已完全处理并急切地关闭了。 然后为什么要首先实现AutoCloseable jOOQ与JDBC的默认行为相反。 在JDBC中默认情况下所有工作都是延迟进行的并且必须显式关闭资源。 在jOOQ中默认情况下会急切地完成所有工作并且可以有选择地使资源保持活动状态。 例如以下代码将保持打开的PreparedStatement和ResultSet try (Connection c DriverManager.getConnection(jdbc:h2:~/test, sa, );// We keep the statement open in the ResultQueryResultQueryRecord query DSL.using(c).resultQuery(SELECT 1 1).keepStatement(true)) {// We keep the ResultSet open in the Cursortry (CursorRecord cursor query.fetchLazy()) {System.out.println(cursor.fetchOne());} } 在此版本中我们在Eclipse中不再有任何警告但是上述版本实际上是使用jOOQ API时的例外。 Java 8的Stream API也是如此。 有趣的是Eclipse在这里不发出任何警告 StreamInteger stream Arrays.asList(1, 2, 3).stream(); stream.forEach(System.out::println);结论 首先资源泄漏检测似乎是一个不错的IDE /编译器功能。 但是避免误报很难。 具体而言因为Java 8改变了合同AutoCloseable 实现者被允许执行AutoCloseable为一种方便的契约而不是作为一种资源存在必须关闭的清晰指示符。 这使IDE很难甚至不是不可能检测第三方合同非JDK API的资源泄漏而这些合同通常并不为人所知。 与静态代码分析工具一样该解决方案通常会关闭潜在的资源泄漏检测 有关更多的见解另请参见Stuart Marks的Stack Overflow答案该链接与EG关于lambda-dev的讨论相关联 翻译自: https://www.javacodegeeks.com/2015/12/subtle-autocloseable-contract-change-java-7-java-8.htmljava自动生成合同
http://www.pierceye.com/news/602522/

相关文章:

  • 可信网站认证有用建设网站什么语言
  • 福州网站建设 大公司wordpress顺序
  • 为什么网站开发要用架构个人主页网站制作教程
  • 东莞教育网站建设做网站工资还没有文员高
  • 郑州网站制作工作室国内网站开发
  • 现在什么网站做外贸的最好wordpress window系统
  • 柬埔寨网赌网站开发新网络营销
  • html5毕业设计作品苏州关键词优化排名推广
  • 网站建设包括的内容相册在线设计平台
  • 花生壳可做网站吗微商城开发用华网天下首选
  • 口岸地区网站建设内容塔里木油田公司档案馆网站建设研究
  • 网站备案属于公司哪一块石家庄最新状况
  • 秦州建设网站免费代刷网站推广
  • 怎么查看一个网站是用什么程序做的我的家乡湛江网站设计
  • 沈阳网页模板建站开发手机app多少钱
  • 全国建设注册中心网站网页设计师培训价格
  • 做网站地图泰安百度公司代理商
  • 网站后台管理员密码汽车网站更新怎么做
  • 广东省网站备案查询怎么建设网站空间和备案
  • 企业网站软件下载红木家具网站模板
  • 如何创建网站步骤湖北网站制作公司的联系方式
  • 佛山建网站费用seo推广效果怎么样
  • 如何选择网站建设公司永州网页定制
  • 淮北市重点工程建设局网站重庆哪家网站
  • 音乐网站开发背景及意义自定义建设网站
  • 商标设计网站猪八戒宝塔一键wordpress
  • 公司网站用什么开发网站 建设 计划书
  • 安陆市城乡建设局网站w10怎么做信任网站
  • wordpress上站工具内网门户网站
  • 商城网站服务器漳浦建设银行网站