Java jdk1.7中try块中的Autocloseable的新概念是什么
jdk1.7中try块中的Autocloseable的新概念是什么。这真的是必需的,还是只是为了增强try-catch块中的某些内容以使其更高级。它支持使用Java jdk1.7中try块中的Autocloseable的新概念是什么,java,autocloseable,Java,Autocloseable,jdk1.7中try块中的Autocloseable的新概念是什么。这真的是必需的,还是只是为了增强try-catch块中的某些内容以使其更高级。它支持使用try-with-resources,这是Java 7的一个新特性 老派: InputStream is = null; try { is = ...; // do stuff with is... } catch (IOException e) { // handle exception } finally {
try-with-resources
,这是Java 7的一个新特性
老派:
InputStream is = null;
try {
is = ...;
// do stuff with is...
} catch (IOException e) {
// handle exception
} finally {
if (is != null) {
try {
is.close();
} catch (IOException innerE) {
// Handle exception
}
}
}
新学校:
try (InputStream is = ...) {
// do stuff with is...
} catch (IOException e) {
// handle exception
}
AutoCloseable
对象可以在try
-块(在()
中)中打开,并将自动关闭,而不是像上面的代码示例那样使用finally
块
从:
try with resources语句是声明一个或多个资源的try语句。资源是一个必须在程序完成后关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的所有对象)都可以用作资源
因此,这意味着所有可自动关闭的对象都可以通过这种方式使用,这意味着,例如,ResultSet
和其他资源可以通过资源试用方式使用。在我看来,这简化了编码和可读性
然而,可读性并不是为什么要使用这种新方法的致命论据。我认为,资源是自动关闭的,这是一个简单的事实。在Java 7之前使用时,可能会忘记执行空检查或关闭底层资源-try with resources更不容易出错
但是,尽管如此。使用try-with-resources是不需要的,尽管我不推荐使用它,但仍然可以按照传统的方式使用它(因为它既冗长又容易出错)。它支持使用
try-with-resources
,这是Java 7的一个新特性
老派:
InputStream is = null;
try {
is = ...;
// do stuff with is...
} catch (IOException e) {
// handle exception
} finally {
if (is != null) {
try {
is.close();
} catch (IOException innerE) {
// Handle exception
}
}
}
新学校:
try (InputStream is = ...) {
// do stuff with is...
} catch (IOException e) {
// handle exception
}
AutoCloseable
对象可以在try
-块(在()
中)中打开,并将自动关闭,而不是像上面的代码示例那样使用finally
块
从:
try with resources语句是声明一个或多个资源的try语句。资源是一个必须在程序完成后关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现java.io.Closeable的所有对象)都可以用作资源
因此,这意味着所有可自动关闭的对象都可以通过这种方式使用,这意味着,例如,ResultSet
和其他资源可以通过资源试用方式使用。在我看来,这简化了编码和可读性
然而,可读性并不是为什么要使用这种新方法的致命论据。我认为,资源是自动关闭的,这是一个简单的事实。在Java 7之前使用时,可能会忘记执行空检查或关闭底层资源-try with resources更不容易出错
但是,尽管如此。使用try-with-resources不需要,尽管我不推荐它,但仍然可以用传统的方式使用它(因为它既冗长又容易出错)。阅读Java 7中引入的特性文档
try
-with resources语句是一个声明一个或多个资源的try语句。资源是一个必须在程序完成后关闭的对象。try with resources语句确保在语句末尾关闭每个资源实现java.lang.AutoCloseable
的任何对象(包括实现java.io.Closeable
的所有对象)都可以用作资源。
以及以下文件的Javadoc:
关闭此资源,放弃任何基础资源。此方法在由try
-with-resources语句管理的对象上自动调用
try (BufferedReader br = new BufferedReader(new InputStreamReader)) {
// try block
} catch (IOException e) {
// No need to close resourse. Only handle exception. Resource will be closed automatically
}
这意味着您可以创建自己的
AutoCloseable
资源子类型,并在此语句中使用它们。阅读Java 7中引入的功能的文档
try (BufferedReader br = new BufferedReader(new InputStreamReader)) {
// try block
} catch (IOException e) {
// No need to close resourse. Only handle exception. Resource will be closed automatically
}
try
-with resources语句是一个声明一个或多个资源的try语句。资源是一个必须在程序完成后关闭的对象。try with resources语句确保在语句末尾关闭每个资源实现java.lang.AutoCloseable
的任何对象(包括实现java.io.Closeable
的所有对象)都可以用作资源。
以及以下文件的Javadoc:
关闭此资源,放弃任何基础资源。此方法在由try
-with-resources语句管理的对象上自动调用
try (BufferedReader br = new BufferedReader(new InputStreamReader)) {
// try block
} catch (IOException e) {
// No need to close resourse. Only handle exception. Resource will be closed automatically
}
这意味着您可以创建自己的AutoCloseable
资源子类型,并在此语句中使用它们
try (BufferedReader br = new BufferedReader(new InputStreamReader)) {
// try block
} catch (IOException e) {
// No need to close resourse. Only handle exception. Resource will be closed automatically
}
java中有许多实现自动关闭的类
下面的链接显示了实现此接口的类的列表
java中有许多实现自动关闭的类
下面的链接显示了实现此接口的类的列表
这解释了如何使用它,而不是为什么要使用它。好的,只是增加了可读性是一个有效的方法argument@jhamonOP并没有问为什么要用它。他问“这真的是必需的,…”同意@EJP,我认为这不是必需的,它只是通过节省两行代码来关闭连接或流,从而增加了复杂性。@Atul_15这是什么意思?使用try with资源自动关闭,例如<代码