gpt4 book ai didi

java - 处理在 try...finally block 中获取资源的代码重复

转载 作者:行者123 更新时间:2023-11-30 06:24:06 28 4
gpt4 key购买 nike

我正在使用 Java 处理数据库,并且一直在按照以下方式编写多个函数

try {
//acquire resources
}
finally {
//release resources
}

我知道 Java 的 try-with-resources 是处理此类问题的好方法,但我使用的是 Java 6。是否有减少代码重复的标准方法?我希望有一种干净的方式来编写多个函数,这些函数具有相同的 try/finally block 用于资源分配,但主体不同。

我目前的想法是让类的函数成员成为构造函数获取资源的类。但是,没有 RAII,它看起来还是有点乱。

最佳答案

如果你有能力使用 Guava (14.0+),你可以使用 Closer .虽然它不会消除 所有 重复,但它是处理实现 Closeable 的资源的一种非常方便的方法——而且不止一个,就此而言:

final Closer closer = Closer.create();
final InputStream in1;
final InputStream in2; // whatever, as long as Closeable is implemented

try {
in1 = closer.register(createIn1());
in2 = closer.register(createIn2());
// do stuff
} finally {
closer.close();
}

此类将以与您注册资源相反的顺序优雅地处理所有资源的关闭。

如果您买不起 Guava,自己编写一个简单版本的代码也很容易。

关于java - 处理在 try...finally block 中获取资源的代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17413454/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com