【发布时间】:2016-04-20 20:40:25
【问题描述】:
为了方便起见,我想使用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) { ... }
所以我可能不应该像上面描述的那样使用它吗?如果这样做是个好习惯?
编辑我被要求解释为什么我的问题与Why is declaration required in Java's try-with-resource不同
解释很简单:我不是在问为什么?,而是:如果这样做是个好习惯?
【问题讨论】:
-
我认为this 是同一个问题。这将在 Java 9 中成为可能。
-
@Tunaki 谢谢,但我不问为什么这样,我问,从设计的角度来看,这样使用它可以吗
-
啊,所以你问这样做是否是一个好习惯?
-
@Tunaki 是的,当然。但无论如何,您的链接非常有用
标签: java autocloseable