我试图通过使用常规的try-catch-finally语句重新创建新的try-with-resources statement来理解它是如何工作的。给定以下使用Java 7 try-with-resources的测试类:
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
public class TryWithResources {
public static void main(String[] args) {
try (GZIPOutputStream gzip = new GZIPOutputStream(System.out)) {
gzip.write("TEST".getBytes("UTF-8"));
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
如何重写该类以使用try-catch-finally语句,该语句生成的字节码与try-with-resources语句生成的字节码完全相同?同样,当使用两个资源时,也会出现同样的问题,如下例所示:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
public class TryWithResources2 {
public static void main(String[] args) {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(baos)) {
gzip.write("TEST".getBytes("UTF-8"));
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
https://stackoverflow.com/questions/7860137
复制相似问题