How is it safer?
In both cases the error occurs at runtime at the exact same point in the
code. And at runtime both are turned into a cast anyway.
I don't think it's safer, it just makes it less clear where the cast is
actually happening, which is bad for code readability.
Clinton
On 3/13/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
"Clinton Begin" <[EMAIL PROTECTED]> scritti il 11/03/2007 04:24:15
> Well, since Java 5 generics are kind of half baked, we don't really
> need to do anything to support them. Sure, we could make it a
> little more "warning friendly", but at the end of the day you'll be
> no more type safe....
>
> You can do this in Java 5:
>
> List untyped = new ArrayList();
> untyped.add(1);
> untyped.add(2);
> untyped.add(3);
>
> // WOW!
> List<String> strings = untyped; // [*]
>
> // Error doesn't happen until you attempt to use the array,
> // no different than old-school casting, but less clear code.
> for(String s : strings) {
> ///...
> }
Genericity is heavily based on a continuum of the static type checking
that can in no way be ensured when you retrieve objects from a non o-o
database, for sure not within the factory itself.
Sooner or later (as quoted above) the type checking has a discontinuity.
That is not a reason to disqualify genericity.
The code based on List<String> that follows [*] is *safer* than the
corresponding code based on List (old school).
The casting is always an act of ... faith.
Better the less than the more.
;)
ciao