Generics is type safety
Not API clarity that was only the case in a few things.

I am against this abuse big time -1000 from me
Then no generics

johan


On Wed, May 21, 2008 at 5:03 PM, Martijn Dashorst <
[EMAIL PROTECTED]> wrote:

> Typesafety from getObject() was never the ultimate goal. API clarity
> was, and JavaDoc is not API clarity.
>
> Martijn
>
> On Wed, May 21, 2008 at 4:59 PM, Sebastiaan van Erk <[EMAIL PROTECTED]>
> wrote:
> > Johan Compagner wrote:
> >>
> >> yes i also thought about some time ago.
> >>
> >> But this is not really better... Now without you doing a cast in the
> code
> >> (so that you know what you are doing)
> >> you suddenly have a class cast exception at some point later on
> >>
> >>
> >> class MyComp extends Component {
> >>       public MyComp() {
> >>           IModel<Integer> model = getModel();
> >>           Integer myInt = model.getObject(); // KABOOM
> >>
> >>       }
> >>
> >> because this thing gives you really a false kind of protection.
> >>
> >> This is really an abuse of generics if you ask me..
> >
> > When I think about it, I have to agree. You can do ugly stuff like:
> >
> > IModel<Integer> x = getModel();
> > IModel<Double> y = getModel();
> >
> > and it will compile just fine... :-(
> >
> > I'd rather have no generics than a dirty hack like this.
> >
> > Regards,
> > Sebastiaan
> >
> >
> >> johan
> >>
> >> On Wed, May 21, 2008 at 3:01 PM, Joni Freeman <[EMAIL PROTECTED]>
> wrote:
> >>
> >>> On Wed, 2008-05-21 at 14:44 +0200, Sebastiaan van Erk wrote:
> >>>>
> >>>> Martijn Dashorst wrote:
> >>>>>
> >>>>> Generified component touches *ALL* code in Wicket, wether you care or
> >>>>> not. IModel<T> itself is rather contained.
> >>>>
> >>>> Yes, but in my opinion rather useless as well. Plus you get heaps of
> >>>> @SuppressWarnings all over the place. Then just get rid of generics
> >>>> completely...
> >>>
> >>> In which case would you need @SuppressWarnings? Consider for instance:
> >>>
> >>>   interface IModel<T> {
> >>>   }
> >>>
> >>>   class Component {
> >>>       private IModel<?> model;
> >>>
> >>>       public <T> IModel<T> getModel() {
> >>>           return (IModel<T>) model;
> >>>       }
> >>>   }
> >>>
> >>>   class MyComp extends Component {
> >>>       public MyComp() {
> >>>           IModel<Integer> model = getModel();
> >>>       }
> >>>   }
> >>>
> >>> This compiles and the only warning is within wicket code. There's an
> >>> unsafe cast to IModel<T>. Of course this would mean that getModel and
> >>> getModelObject could throw classcastexception. It's a tradeoff: simple
> >>> and more conservative usage of generics vs. fully type safe but complex
> >>> and verbose usage of generics.
> >>>
> >>> Joni
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >>
> >
>
>
>
> --
> Buy Wicket in Action: http://manning.com/dashorst
> Apache Wicket 1.3.3 is released
> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.3
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to