Actually, I believe it's very helpful to the OP.

If Lombok is fair game for mixing into a Java project, and (I suspect)
nobody would bat an eyelid at the idea of throwing together a quick Spring
XML file for this sort of thing, then why is it fundamentally different to
suggest adding a couple of Scala source files to an existing codebase?

I could equally have chosen JavaFX script or Groovy using the exact same
logic, but it just so happens that I'm more familiar with Scala.


Seriously, I love Java, I really do.  But not to the exclusion of all else,
whatever the cost...



2010/10/13 Cédric Beust ♔ <[email protected]>

> Kevin, please... just... stop.
>
> Your message is of absolutely no help to the original poster and just yet
> another plug for Scala.
>
> Quit it.
>
> --
> Cédric
>
>
> On Tue, Oct 12, 2010 at 3:15 PM, Kevin Wright <[email protected]>wrote:
>
>> You can't blame Scala for being flexible here!
>> Seriously, if it wasn't so practical in so many scenarios, do you honestly
>> think that people would be praising it quite as much as we do?
>>
>> Anyway, case classes with named+default parameters DO allow the builder
>> pattern.  Mostly by making it obsolete through the copy method:
>>
>>   case class Node(x : Int = 0, y : Int = 0, z : Int = 0)
>>
>>   val n = new Node
>>   val n1 = n copy (x = 1)
>>   val n2 = n1 copy (y = 2)
>>   val n3 = n2 copy (z = 3)
>>
>> or daisy-chain the calls:
>>
>>    val n4 = (new Node) copy (x = 1) copy (y = 2) copy (z = 3)
>>
>> It's not the way I'd recommend it though, you're better off using the
>> named params directly:
>>
>>   val n5 = Node(
>>     x = 1,
>>     y = 2,
>>     z = 3
>>   )
>>
>> And do feel free to leave out any params you're not concerned about, they
>> all have defaults:
>>
>>   val n6 = Node(
>>     x = 1,
>>     z = 3
>>   )
>>
>>   val n7 = Node(
>>     y = 2
>>   )
>>
>> At this point, users of JavaFX script should be starting to feel an eerie
>> sense of familiarity...
>>
>>
>>
>>
>> On 12 October 2010 20:59, Casper Bang <[email protected]> wrote:
>>
>>> Wow, there's Scala again. Amazing how it somehow always sneaks in. As
>>> to the topic at hand, I'd suggest submitting a request for
>>> enhancement. The right people (Tulach etc.) can probably have this
>>> done in a jiff with a check-box in the existing accessor wizard.
>>>
>>> On Oct 12, 9:46 pm, Ricky Clarkson <[email protected]> wrote:
>>> > Scala's case classes plus named arguments really solve this well,
>>> > particularly if the calling code can be Scala too.
>>> >
>>> > case class Node(x: Float, y: Float)
>>> >
>>> > On Tue, Oct 12, 2010 at 8:42 PM, B Smith-Mannschott
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > <[email protected]> wrote:
>>> > > OK, so we've established that neither Eclipse nor Lombok will do what
>>> > > the OP needs.  Are there any other alternatives?
>>> >
>>> > > I found myself needing something very similar only last week. In my
>>> > > case, it was for a simple immutable value type (using Lombok's
>>> > > lovely @Data) to which I wanted to add fluent builder style methods,
>>> > > e.g.:
>>> >
>>> > > @Data
>>> > > class Node {
>>> > >  private final float x;
>>> > >  private final float y;
>>> > >  // Lombok generates getX(), getY(), but not setX(), setY()
>>> > >  //   because x, y are final.
>>> > >  // Lombok generates Node(float x, float y) constructor
>>> > >  //   since x and y are final.
>>> > >  Node withX(float x) {
>>> > >    return new Node(x, y);
>>> > >  }
>>> > >  Node withY(float y) {
>>> > >    return new Node(x, y);
>>> > >  }
>>> > > }
>>> >
>>> > > I ended up firing up emacs and defining a ad-hoc keyboard macro
>>> > > to grind out the code for me. Yea! More boilerplate for the next
>>> > > developer to wade through! huzzah!
>>> >
>>> > > How difficult would it be for someone inexperienced with Lombok's
>>> > > internals to add something like this?
>>> >
>>> > > Stuff like this is why I'm glad there's more than just Java on the
>>> > > JVM. For example, a Lisp (like Clojure) makes this kind of code
>>> > > generation drudgery easy via its civilized [1] macro support.
>>> >
>>> > > [1] where uncivilized == the C preprocessor.
>>> >
>>> > > // Ben
>>> >
>>> > > On Tue, Oct 12, 2010 at 18:27, Reinier Zwitserloot <
>>> [email protected]> wrote:
>>> > >> project lombok can do this without cluttering up your code:
>>> > >>http://projectlombok.org/(disclaimer: I'm a lombok developer). It
>>> > >> works in both eclipse and netbeans (and the command line).
>>> >
>>> > >> Eclipse has built in support to generate these (in the source menu,
>>> > >> "generate getters/setters"). I'm fairly sure netbeans has something
>>> > >> similar, no plugins required. They do actually stick text in your
>>> > >> source files that you then have to maintain, though, unlike Lombok.
>>> >
>>> > >> As far as I know none of these generate the 'return this' style
>>> > >> setter, because that style of setter does not adhere to the bean
>>> > >> standard.
>>> >
>>> > >> On Oct 12, 5:22 pm, Peter A Pilgrim <[email protected]>
>>> wrote:
>>> > >>> Hi Everyone
>>> >
>>> > >>> May be even Tor can help.
>>> >
>>> > >>> Has anyone come across a name value pattern plugin for NetBeans or
>>> > >>> Eclipse IDE?
>>> > >>> Given a class like this:
>>> >
>>> > >>> class Node {
>>> > >>>      private float x;
>>> > >>>      private float y;
>>> > >>>      private float z;
>>> >
>>> > >>> }
>>> >
>>> > >>> The plugin generates the accessors and builder chain mutators
>>> >
>>> > >>> class Node {
>>> > >>>      private float x;
>>> > >>>      private float y;
>>> > >>>      private float z;
>>> >
>>> > >>>      public float getX() { return x; }
>>> > >>>      public Node setX( float x ) { this.x = x; return this }
>>> > >>>      public float getY() { return x; }
>>> > >>>      public Node setY( float y ) { this.y = y; return this }
>>> > >>>      public float getZ() { return z; }
>>> > >>>      public Node setZ( float z ) { this.z = z; return this }
>>> >
>>> > >>> }
>>> >
>>> > >>> TIA
>>> >
>>> > >> --
>>> > >> You received this message because you are subscribed to the Google
>>> Groups "The Java Posse" group.
>>> > >> To post to this group, send email to [email protected].
>>> > >> To unsubscribe from this group, send email to
>>> [email protected]<javaposse%[email protected]>
>>> .
>>> > >> For more options, visit this group athttp://
>>> groups.google.com/group/javaposse?hl=en.
>>> >
>>> > > --
>>> > > You received this message because you are subscribed to the Google
>>> Groups "The Java Posse" group.
>>> > > To post to this group, send email to [email protected].
>>> > > To unsubscribe from this group, send email to
>>> [email protected]<javaposse%[email protected]>
>>> .
>>> > > For more options, visit this group athttp://
>>> groups.google.com/group/javaposse?hl=en.
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "The Java Posse" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<javaposse%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/javaposse?hl=en.
>>>
>>>
>>
>>
>> --
>> Kevin Wright
>>
>> mail / gtalk / msn : [email protected]
>> pulse / skype: kev.lee.wright
>> twitter: @thecoda
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "The Java Posse" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<javaposse%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/javaposse?hl=en.
>>
>
>
>
> --
> Cédric
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "The Java Posse" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<javaposse%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/javaposse?hl=en.
>



-- 
Kevin Wright

mail / gtalk / msn : [email protected]
pulse / skype: kev.lee.wright
twitter: @thecoda

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to