Java7's try-with-resources is great and all, but I can't wrap my head around why it is required to include the declaration of the resource in the try
statement. My gut says the following should be possible:
CloseableResource thing;
try (thing = methodThatCreatesAThingAndDoesSomeSideEffect()) {
// do some interesting things
}
thing.collectSomeStats();
Alas, this results in a syntax error (cryptically expecting a ;
). Moving the type definition/declaration into the try
statement works, which of course moves thing into the corresponding scope. I can figure out how to work around this when I want more from my AutoClosable
than getting closed, I'm interested in why the compiler requires it like this.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…