也就是说,按照我们的假设:如果 Java 能够实现真正意义上的泛型,两个 method()
方法是可以同时存在的,就好像方法重载一样。
public class Cmower {
public static void method(String list) {
}
public static void method(Date list) {
}
}
为什么 Java 不能实现真正意义上的泛型呢?背后的原因是什么?
第一,兼容性
Java 在 2004 年已经积累了较为丰富的生态,如果把现有的类修改为泛型类,需要让所有的用户重新修改源代码并且编译,这就会导致 Java 1.4 之前打下的江山可能会完全覆灭。
想象一下,你的代码原来运行的好好的,就因为 JDK 的升级,导致所有的源代码都无法编译通过并且无法运行,是不是会非常痛苦?
类型擦除就完美实现了兼容性,Java 1.5 之后的类可以使用泛型,而 Java 1.4 之前没有使用泛型的类也可以保留,并且不用做任何修改就能在新版本的 Java 虚拟机上运行。
老用户不受影响,新用户可以自由地选择使用泛型,可谓一举两得。
第二,不是“实现不了”
这部分内容参考自 R大@RednaxelaFX
Pizza,1996 年的实验语言,在 Java 的基础上扩展了泛型。
Pizza 教程地址:http://pizzacompiler.sourceforge.net/doc/tutorial.html
</