【发布时间】:2017-10-29 15:11:56
【问题描述】:
Java7 的 try-with-resources 非常棒,但我无法理解为什么需要在 try 语句中包含资源声明。我的直觉说以下应该是可能的:
CloseableResource thing;
try (thing = methodThatCreatesAThingAndDoesSomeSideEffect()) {
// do some interesting things
}
thing.collectSomeStats();
唉,这会导致语法错误(神秘地期待 ;)。将类型定义/声明移动到 try 语句中是可行的,这当然会将事物移动到相应的范围内。当我想从我的AutoClosable 获得更多而不是关闭时,我可以弄清楚如何解决这个问题,我对为什么编译器需要它感兴趣。
【问题讨论】:
-
从 Java 9 开始,如果它是一个表示对最终变量或有效最终变量的引用的表达式就足够了。