运行以下代码时
class MyResource1 implements AutoCloseable {
public void close() throws IOException {
System.out.print("1 ");
}
}
class MyResource2 implements Closeable {
public void close() throws IOException {
throw new IOException();
}
}
public class MapAndFlatMap {
public static void main(String[] args) {
try (
MyResource1 r1 = new MyResource1();
MyResource2 r2 = new MyResource2();
) {
System.out.print("T ");
} catch (IOException ioe) {
System.out.print("IOE ");
} finally {
System.out.print("F ");
}
}
}
我得到以下输出
T IOE 1 F
但我在期待
T 1 IOE F
即使在中更改了资源的顺序,也可以尝试以下操作
MyResource2 r2 = new MyResource2();
MyResource1 r1 = new MyResource1();
产量没有变化。据我所知,资源将按照其声明的相反方向关闭。是否正确?