Hi Paul, the use of that method is to automatically infer the assigned type, instead of writing
MyPojo myPojo = (MyPojo) context.get( "myKey" ); the retrieve method allows to MyPojo myPojo = context.retrieve( "myKey" ); both throw ClassCastException if types are not assignable, but with the second method users don't have to repeat the type by casting. Simo http://people.apache.org/~simonetripodi/ http://www.99soft.org/ On Fri, Sep 9, 2011 at 9:25 PM, Paul Benedict <pbened...@apache.org> wrote: > In my personal use of Chain, I am using it as <String, Object>. So > typing as Context<K, V> is good. Though, do we need type T? Shouldn't > retrieve(K) just return V? > > On Fri, Sep 9, 2011 at 2:21 PM, Simone Tripodi <simonetrip...@apache.org> > wrote: >> here I am! >> sorry I'm late but just terminated to have dinner :P >> I think that specifying the <extending Object> can be omitted, and >> Paul's suggestion is the way to go, the code is more readable. >> >> The last added method can be improved, putting the K as argument >> instead of String and <T extends V> as a strict check for output >> argument: >> >> public interface Context<K, V> >> extends Map<K, V> >> { >> >> <T extends V> T retrieve(K key); >> >> } >> >> what I think is not so nice to have, is the Command, Filter, Chain, >> ..., notation that, getting Context as argument in their methods, >> would require generics... >> >> Lets' think about it, thanks for sharing your thoughts!!! >> All the best, >> Simo >> >> http://people.apache.org/~simonetripodi/ >> http://www.99soft.org/ >> >> >> >> On Fri, Sep 9, 2011 at 8:56 PM, Elijah Zupancic <eli...@zupancic.name> wrote: >>> Paul, >>> >>> You may be right. Which one is more idiomatic? >>> >>> Thanks, >>> -Elijah >>> >>> On Fri, Sep 9, 2011 at 11:51 AM, Paul Benedict <pbened...@apache.org> wrote: >>>> On Fri, Sep 9, 2011 at 1:47 PM, Elijah Zupancic <eli...@zupancic.name> >>>> wrote: >>>>> Thanks for your comments Nail. >>>>> >>>>> I think that I've come around to see your point after sleeping on it. >>>>> What do you think about this: >>>>> >>>>> Context.java - would be defined as so: >>>>> >>>>> public interface Context<K extends Object, V extends Object> extends >>>>> Map<K, V> >>>> >>>> Isn't that identical to? >>>> public interface Context<K, V> extends Map<K, V> >>>> >>>>> Then ContextBase.java would be defined like so: >>>>> >>>>> public class ContextBase extends ConcurrentHashMap<String, Object> >>>>> implements Context<String, Object> { >>>> >>>> Paul >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>>> For additional commands, e-mail: dev-h...@commons.apache.org >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >>> For additional commands, e-mail: dev-h...@commons.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> For additional commands, e-mail: dev-h...@commons.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org