Casper, You are correct. I just wanted the other readers to know that it is not limited to "close". It is however limited to no-args methods.
Roel On Sep 1, 4:10 pm, Casper Bang <casper.b...@gmail.com> wrote: > I think you misunderstood Roel. I am aware of the method name argument > override, I was merely exploring the different implementations and > implications of these two ARM blocks. The JDK7 version would have to > rely on a new interface Disposable being added to the libraries, as > the abomination known as checked exceptions (IOException) once again > gets in the way of simply using the existing Closable. Lombok couldn't > care less what it's closing and could in fact be used as a C++ > deconstructor. Correct? > > /Casper > > On 1 Sep., 15:47, Roel Spilker <r.spil...@gmail.com> wrote: > > > Caster, that is not entirely correct. The "close" methode (actually, > > close is just the default, you can specify an other method name if you > > want) will be called when the variable goes out of scope. > > Unfortunately, java does not allow an annotation on a code block. So > > an equivalent programm would be: > > > { > > @Cleanup InputStream in = new FileInputStream(...); > > // Do something else... > > > } > > > On Sep 1, 3:10 pm, Casper Bang <casper.b...@gmail.com> wrote: > > > > The neat thing about this is that we do not have to wait until the > > > Java API has been retrofitted with the Disposable interface. However, > > > you won't get the scope limitation benefits (the in and out variable > > > is scoped the whole method). I kind of wish we could use annotations > > > on blocks, so this would be possible instead: > > > > @Cleanup{ > > > InputStream in = new FileInputStream( ... ); > > > // Do something... > > > > } > > > > @Cleanup{ > > > InputStream in = new FileInputStream( ... ); > > > // Do something else... > > > > } > > > > /Casper > > > > On 1 Sep., 14:53, Roel Spilker <r.spil...@gmail.com> wrote: > > > > > For ARM-blocks you can have a look at the @Cleanup annotation of > > > > Lombok and have ARM-blocks for Java right now! > > > > > The following code will close both streams correctly after they run > > > > out of scope. > > > > > import lombok.Cleanup; > > > > import java.io.*; > > > > > public class CleanupExample { > > > > public static void main(String[] args) throws IOException { > > > > @Cleanup InputStream in = new FileInputStream(args[0]); > > > > @Cleanup OutputStream out = new > > > > FileOutputStream(args[1]); > > > > byte[] b = new byte[10000]; > > > > while (true) { > > > > int r = in.read(b); > > > > if (r == -1) break; > > > > out.write(b, 0, r); > > > > } > > > > } > > > > > } > > > > > Seehttp://projectlombok.org/features/Cleanup.htmlformore > > > > information > > > > > On Sep 1, 2:19 pm, "joel.neely" <joel.ne...@gmail.com> wrote: > > > > > > According to coverage > > > > > athttp://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/10 > > > > > , Snow Leopard, the latest version of Mac OS X, added "blocks" to C. > > > > > The article illustrates this new language construct with the by-now > > > > > canonical ARM and home-grown-control-structure examples. > > > > > > Hey, Java! Closures to the left of me [JRuby, Scala, etc.], blocks to > > > > > the right [C on OS X], here I am, stuck in the middle with you! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to javaposse@googlegroups.com To unsubscribe from this group, send email to javaposse+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/javaposse?hl=en -~----------~----~----~----~------~----~------~--~---