Huh. Yeah, I don't really know the history of Generics in each language. I'm assuming there's value in the .NET model, but I still find the Java model more intuitive to program in. The reason is that I think of Generics as something that are "contained" in a class, while being separate of the class. So something like: Mug<Cocoa> yourdrink = new Mug<Cocoa>(); Mug<Coffee> mydrink = new Mug<Coffee>(); Mug.topology = Doughnut; makes more sense, I the general shape of all Mugs shouldn't be dependent on what liquid they contain. I can see the value of the dotnet approach too, but its just simply less intuitive.
On Sat, Jan 10, 2009 at 10:46 AM, Jonathan Pryor <[email protected]> wrote: > On Sat, 2009-01-10 at 02:38 -0800, Luke B wrote: > > Good read. You got me wondering why type erasure is used. From the > > Java site: > > > > Type erasure enables Java applications that use generics to maintain > > binary compatibility with Java libraries and applications that were > > created before generics. > > The problem is, they failed. The _original_ intent, as I remember it > when doing Java development, was that Java 1.5 libraries could still be > used by the Java 1.4 development chain, i.e. you could use generic > classes from a non-generic runtime, etc. Had this *actually* been the > case, the tradeoffs would likely have been acceptable. > > Alas, that is not the case; they had to change class file format anyway, > thus preventing 1.5 .class files from being loaded into a 1.4 runtime. > > Furthermore, back in 1999 there were Java generic efforts that mirrored > what .NET has -- actual distinct generic types, the use of value types > within the generic system (so you could have an ArrayList<int> > implemented atop an int[] as opposed to the Java 1.5 List<Integer> > implemented atop an Object[]). It was rejected because...it introduced > incompatible changes to the runtime (shock! horror!). > > > That might be why it feels more "natural" to me than the .NET stuff, > > just because I have a long history with Java. You're probably right on > > the .NET system being better in the long run, it was designed at a > > time when they could take all the lessons and mistakes of Java into > > account... > > That can't be entirely true, either. Java 1.5 was released in September > 2004, while .NET 2.0 was released in November 2005. 14 months is not > enough time to get feedback from the Java release and introduce any > major changes. > > For that matter, I know that MSR was looking into generics *before* .NET > 1.0 was released (and found a few semantics issues in the BCL because of > it that were subsequently fixed), so it really doesn't make sense to > state that .NET was building off of Java's failures. The issues with > erasure were known well before Java 1.5 was released; Sun was just > willing to live with those restrictions. > > - Jon > > >
_______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
