Radenski, A., J. Furlong, V.
Zanev. The Java 5 Generics Compromise Orthogonality to Keep Compatibility.
Journal of Systems and Software, Elsevier Science, Vol. 81, Issue 11, 2008,
2069-2078.
In response to a
long-lasting anticipation by the Java community, version 1.5 of the Java 2
platform - referred to as Java 5 - introduced generic types and methods to the
Java language. The Java 5 generics are a significant enhancement to the
language expressivity because they allow straightforward composition of new
generic classes from existing ones while reducing the need for a plethora of
type casts. While the Java 5 generics are expressive, the chosen implementation
method, type erasure, has triggered undesirable orthogonality violations. This
paper identifies six cases of orthogonality violations in the Java 5 generics
and demonstrates how these violations are mandated by the use of type erasure.
The paper also compares the Java 5 cases of orthogonality violations to
compatible cases in C# 2 and NextGen 2 and analyzes the trade-offs in the three
approaches. The conclusion is that Java 5 users face new challenges: a number
of generic type expressions are forbidden, while others that are allowed are
left unchecked.
Last updated: September 2008