On Tue, Oct 22, 2013 at 4:53 PM, Duncan Jones <djo...@cantab.net> wrote:
> On 22 October 2013 21:07, Gary Gregory <garydgreg...@gmail.com> wrote: > > On Tue, Oct 22, 2013 at 3:59 PM, Matt Benson <gudnabr...@gmail.com> > wrote: > > > >> So what is having a non-generic runtime class accomplishing for you? > >> > > > > The subclass "is a kind of" pair AND it is domain typed to my app. > > > > Gary > > Sebb is correct - composition would work well here. You can still > defer to the equals/hashcode from the underlying ImmutablePair as you > appear to store no other state within the class. > I could do it that way and end up with a hierarchy likeL - Lang final ImmutablePair<K,V> - My ImmutablePairProxy<K, V> wraps an ImmutablePair<K,V> - My ImmutablePairProxyClass extends ImmutablePairProxy<Foo, Bar> - My ImmutablePairProxyClass extends ImmutablePairProxy<Zing, Bat> It's doable but it feels more spaghetti like than subclassing ImmutablePair. Gary > Duncan > > > > > > > >> > >> Matt > >> > >> > >> On Tue, Oct 22, 2013 at 2:29 PM, Gary Gregory <garydgreg...@gmail.com > >> >wrote: > >> > >> > > >> > > >> > > >> > Sent via the Samsung Galaxy NoteĀ® 3, an AT&T 4G LTE smartphone > >> > > >> > -------- Original message -------- > >> > From: sebb > >> > Date:10/22/2013 13:37 (GMT-05:00) > >> > To: Commons Developers List > >> > Subject: Re: [lang] ImmutablePair is final > >> > > >> > On 22 October 2013 18:33, Gary Gregory <garydgreg...@gmail.com> > wrote: > >> > > On Tue, Oct 22, 2013 at 1:22 PM, Paul Benedict < > pbened...@apache.org> > >> > wrote: > >> > > > >> > >> If you can subclass, the class will likely be mutable somehow > >> (accessing > >> > >> protected or package-private data?) -- even introducing new > variables > >> > >> exclusive to the subclass. The "final" keyword is used well here. > >> > >> > >> > > > >> > > Here is my use case for which I've cloned ImmutablePair into my own > >> > package > >> > > (yuck): > >> > > >> > Composition (rather than extension) would work better here surely? > >> > > >> > Surely indeed Shirley ;) (Airplane!) > >> > > >> > Right now I am getting hashCode and equals for free with the subclass > >> > hack. > >> > > >> > Gary > >> > > >> > > >> > > public final class ImmutableFooImmutableBarPair extends > >> > > ImmutablePair<ImmutableFoo, ImmutableBar> { > >> > > > >> > > private static final long serialVersionUID = 123L; > >> > > > >> > > public ImmutableFooImmutableBarPair (final ImmutableFoo foo, > final > >> > > ImmutableBar bar) { > >> > > super(Validate.notNull(nameMatch), > Validate.notNull(article)); > >> > > } > >> > > > >> > > public ImmutableFoo getImmutableFoo() { > >> > > return this.getValue(); > >> > > } > >> > > > >> > > public ImmutableBar getImmutableBar() { > >> > > return this.getKey(); > >> > > } > >> > > ... > >> > > ImmutableFooImmutableBarPair pair = new > >> > ImmutableFooImmutableBarPair(myFoo, > >> > > myBar); > >> > > ... > >> > > pair.getImmutableFoo(); > >> > > ... > >> > > pair.getImmutableBar(); > >> > > > >> > > Gary > >> > > > >> > > > >> > >> > >> > >> On Tue, Oct 22, 2013 at 12:15 PM, sebb <seb...@gmail.com> wrote: > >> > >> > >> > >> > On 22 October 2013 18:10, Gary Gregory <garydgreg...@gmail.com> > >> > wrote: > >> > >> > > Hi All: > >> > >> > > > >> > >> > > Is there any reason we would want to keep ImmutablePair final? > >> > >> > > >> > >> > To stop mutable subclasses from being created? > >> > >> > > >> > >> > BTW, it's unfortunate that the fields are public; they should > have > >> > >> > been private (there are public getters). > >> > >> > > >> > >> > > Gary > >> > >> > > > >> > >> > > -- > >> > >> > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > >> > >> > > Java Persistence with Hibernate, Second Edition< > >> > >> > http://www.manning.com/bauer3/> > >> > >> > > JUnit in Action, Second Edition < > http://www.manning.com/tahchiev/ > >> > > >> > >> > > Spring Batch in Action <http://www.manning.com/templier/> > >> > >> > > Blog: http://garygregory.wordpress.com > >> > >> > > Home: http://garygregory.com/ > >> > >> > > Tweet! http://twitter.com/GaryGregory > >> > >> > > >> > >> > > >> --------------------------------------------------------------------- > >> > >> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > >> > For additional commands, e-mail: dev-h...@commons.apache.org > >> > >> > > >> > >> > > >> > >> > >> > >> > >> > >> -- > >> > >> Cheers, > >> > >> Paul > >> > >> > >> > > > >> > > > >> > > > >> > > -- > >> > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > >> > > Java Persistence with Hibernate, Second Edition< > >> > http://www.manning.com/bauer3/> > >> > > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > >> > > Spring Batch in Action <http://www.manning.com/templier/> > >> > > Blog: http://garygregory.wordpress.com > >> > > Home: http://garygregory.com/ > >> > > Tweet! http://twitter.com/GaryGregory > >> > > >> > --------------------------------------------------------------------- > >> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > For additional commands, e-mail: dev-h...@commons.apache.org > >> > > >> > > >> > > > > > > > > -- > > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > > Java Persistence with Hibernate, Second Edition< > http://www.manning.com/bauer3/> > > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > > Spring Batch in Action <http://www.manning.com/templier/> > > Blog: http://garygregory.wordpress.com > > Home: http://garygregory.com/ > > Tweet! http://twitter.com/GaryGregory > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory