首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java有using语句吗?

Java有using语句吗?
EN

Stack Overflow用户
提问于 2010-01-07 05:15:20
回答 9查看 86.7K关注 0票数 115

在hibernate中打开会话时,Java有没有可以使用的using语句?

在C#中,它类似于:

代码语言:javascript
复制
using (var session = new Session())
{


}

因此,该对象会超出作用域并自动关闭。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-01-07 05:17:32

Java7引入了Automatic Resource Block Management,它为Java平台带来了这个特性。以前的Java版本没有任何类似using的东西。

例如,您可以通过以下方式使用实现java.lang.AutoCloseable的任何变量:

代码语言:javascript
复制
try(ClassImplementingAutoCloseable obj = new ClassImplementingAutoCloseable())
{
    ...
}

Java实现的java.io.Closeable接口自动扩展了AutoCloseable,因此您已经可以在try块中使用streams,就像在C# using块中使用它们一样。这相当于C#的using

version 5.0, Hibernate Sessions implement AutoCloseable开始,可以在ARM块中自动关闭。在Hibernate Session did not implement AutoCloseable的早期版本中。因此,您需要使用Hibernate >= 5.0才能使用此功能。

票数 136
EN

Stack Overflow用户

发布于 2011-08-24 16:17:41

从Java7开始就是这样:http://blogs.oracle.com/darcy/entry/project_coin_updated_arm_spec

问题中代码的语法为:

代码语言:javascript
复制
try (Session session = new Session())
{
  // do stuff
}

请注意,Session需要实现AutoClosable或其(多个)子接口之一。

票数 20
EN

Stack Overflow用户

发布于 2010-01-07 05:18:14

从技术上讲:

代码语言:javascript
复制
DisposableObject d = null;
try {
    d = new DisposableObject(); 
}
finally {
    if (d != null) {
        d.Dispose();
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2016299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档