涉及try-with-resources语句,我已经看到了JLS8的定义here
带有声明多个资源的ResourceSpecification子句的try-with-resources语句被视为多个try-with-resources语句,每个语句都有一个声明单个Resource的ResourceSpecification子句。 当翻译带有n个资源(n> 1)的try-with-resources语句时,结果是带有n-1个资源的try-with-resources语句。在这样的翻译之后,有n个嵌套的try-catch-finally语句,整个翻译完成。
我不明白为什么 n-1资源而不是 n资源。另一方面,我找到了例子example。在此示例中,作者使用try-with-finally而不是使用try-with-resources。我不明白他没有使用3次尝试 - 最终(他只使用2次)?
此外,我还认为使用n个资源的资源尝试与n个单独的资源尝试,例如:
try(R1; R2; R3) = try(R1){try(R2){try(R3)}}}
因为我认为所有资源都会按顺序创建。而且,上面的资源尝试也转换为n try-catch-finally。
可以吗:)请帮我澄清一下:)