Prinzipiell hat man das “normale” Verhalten, nur eben auch für Primitive. Spannend ist der Abschnitt “User control over specialization”, der tatsächlich an C+±Templates erinnert. Das ist aber für die eigentliche Kernfunktionalität nicht notwendig, sondern nur das Sahnehäubchen, das eventuell nebenbei abfallen könnte. Und natürlich ist das Geschrei vorhersehbar, wenn man so eine Spezialisierung nur bei Primitiven hat, aber nicht zwischen verschiedenen Objekt-Typen - was natürlich “dank” Type-Erasure nicht funktionieren kann.
Erstmal ein Research Projekt, aber ein sehr interessantes. Was besonders interessant ist sind die vielen Probleme mit verschiedenen Basetypes. So ist List kein Subtype von List da int kein Subtype von Object ist im Gegensatz von Integer. Wenn man sich all die Probleme im Detail anschaut, versteht man wieso sie sich damals für diese krude Generics Implementierung entschieden haben.
Ich hoffe diesmal ist genug Zeit eine saubere Lösung zu finden.
Die Idee geistert schon eine Weile durchs Netz, teilweise auf Blogs bei denen man es trotz allem als nicht mehr als ein “Gedankenexperiment” bezeichnen konne. Aber jetzt scheint das ja konkreter zu werden. Eine etwas ausführlichere “Vorgänger”?version (hab’ sie zeitbedingt noch nicht gelesen) gibt’s auf http://cr.openjdk.java.net/~jrose/values/values-0.html
Jein die Value Types sind etwas anders aber sie sind der eigentliche Grund wieso man jetzt ernsthaft nach einer Lösung für die halbgaren Generics sucht, die Arrays 2.0 (http://cr.openjdk.java.net/~jrose/pres/201207-Arrays-2.pdf, ) übrigens auch
edit: Danke Marco für den Blogeintrag über Tuples, der ist mir irgendwie entgangen