为了方便起见,我想使用AutoCloseable
接口对对象做一些事情,这些事情应该在进一步使用之前完成。
唯一的问题是try-with-resources
块本身就是事物,我的意思是一般来说,为了获得对我的AutoCloseable
实例的引用,我必须做这样的事情:
MyCloseable mc;
try (MyCloseable m = mc = new MyCloseable()) {
m.doSomeStuff();
}
System.out.println(mc.getValue1());
System.out.println(mc.getValue2());
// ... and so on
这里是这个结构:
MyCloseable mc;
try (MyCloseable m = mc = new MyCloseable()) {
看起来有些凌乱。所以我的问题更多是关于设计问题。我怀疑java架构师没有设想这样使用try-w-r
块的原因是什么:
MyCloseable mc = new MyCloseable();
try (mc) { ... }
那么我可能不应该像上面描述的那样使用它吗?如果这样做是个好习惯?
编辑我被要求解释为什么我的问题与为什么 Java 的 try-with-resource 中需要声明不同
解释很简单:我不是在问为什么?,但是:如果这样做是个好习惯?