Java的泛型,复杂深奥,还有许多的限制,我理解之所以出现这种情况,有两个原因:
第一,java泛型是从Java 1.5以后新增加的功能。因此,必须考虑到向后兼容性。即你不能把Java 1.5看作一个全新的东西,一门全新的语言。Java十多年来一路走来,从1.0到1.5,java已经背上了沉重的历史包袱。就像C++背着C的历史包袱一样,你不能指望他像个新生的婴儿那样轻装上阵。
第二点,想方设法保证类型的安全。这里引用Sun的一段话: We've had type-safety as a primary design goal of generics. In particular, the language is designed to guarantee that if your entire application has been compiled without unchecked warnings using javac -source 1.5, it is type safe.