Java 是否有 using 语句?
2022-08-31 16:29:56
Java 是否有在休眠状态下打开会话时可以使用的 using 语句?
在C#中,它是这样的:
using (var session = new Session())
{
}
因此,该对象超出范围并自动关闭。
Java 是否有在休眠状态下打开会话时可以使用的 using 语句?
在C#中,它是这样的:
using (var session = new Session())
{
}
因此,该对象超出范围并自动关闭。
Java 7 引入了自动资源块管理,将此功能引入 Java 平台。以前版本的Java没有任何类似的东西。using
例如,您可以通过以下方式使用任何实现的变量:java.lang.AutoCloseable
try(ClassImplementingAutoCloseable obj = new ClassImplementingAutoCloseable())
{
...
}
Java的接口由流实现,自动扩展,因此您已经可以在块中使用流,就像在C#块中使用流一样。这相当于 C# 的 。java.io.Closeable
AutoCloseable
try
using
using
从版本 5.0 开始,休眠会话实现了自动关闭,
并且可以在 ARM 块中自动关闭。在以前版本的休眠会话中,未实现自动关闭
。因此,您需要使用Hibernate >= 5.0才能使用此功能。
在Java 7之前,Java中没有这样的功能(对于Java 7及更高版本,请参阅Asaph关于ARM的答案)。
你需要手动完成它,这很痛苦:
AwesomeClass hooray = null;
try {
hooray = new AwesomeClass();
// Great code
} finally {
if (hooray!=null) {
hooray.close();
}
}
当两者都不能抛出任何异常时,这只是代码。// Great code
hooray.close()
如果你真的只想限制一个变量的作用域,那么一个简单的代码块就可以完成这项工作:
{
AwesomeClass hooray = new AwesomeClass();
// Great code
}
但这可能不是你的意思。