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
-~----------~----~----~----~------~----~------~--~---

Reply via email to