在弄乱Eclipse中的自定义格式设置选项的同时,在示例代码之一中,我看到了如下代码:
/** * 'try-with-resources' */ class Example { void foo() { try (FileReader reader1 = new FileReader("file1"); FileReader reader2 = new FileReader("file2")) { } } }
我从未见过try像这样使用过,并且我从事Java编程已有9年了!有谁知道你为什么要这么做?这样做的可能用例/好处是什么?
try
我看到的另一段代码,我认为这是一个非常有用的速记,因此我也在这里共享了它,它的作用很明显:
/** * 'multi-catch' */ class Example { void foo() { try { } catch (IllegalArgumentException | NullPointerException | ClassCastException e) { e.printStackTrace(); } } }
它是在Java 7中添加的。它称为try-with- resources语句。
/编辑
最好也把它扔在这里。Lock如果使用如下包装器类,则可以使用try-with-resources语句来管理:
Lock
public class CloseableLock implements Closeable { private final Lock lock; private CloseableLock(Lock l) { lock = l; } public void close() { lock.unlock(); } public static CloseableLock lock(Lock l) { l.lock(); return new CloseableLock(l); } } try(CloseableLock l = CloseableLock.lock(lock)) { // acquire the lock // do something } // release the lock
但是,由于必须为每个资源声明一个变量,因此其优点值得商de。