我使用泛型类型编写了一个简单的程序。但是,简单示例在不同的JDK版本上表现不同。
简单代码如下:
import java.util.List;
public class GenericTypes {
public static String method(List<String> list) {
System.out.println("Method method(List<String> list) is invoked.");
return "";
}
public static int method(List<Integer> list) {
System.out.println("Method method(List<Integer> list) is invoked.");
return 0;
}
}
场景#1 ==&gt;在JDK 1.7上,出现编译错误
`Method method(List<String>) has the same erasure method(List<E>) as another method in type GenericTypes.`
场景#2 ==&gt;在JDK 1.6或1.5上,没有编译错误。
控制台中代码和输出的屏幕截图如下:
众所周知,自JDK 1.5以来就引入了Generic Type。但是,通过上面的简单示例,它在不同的JDK版本中表现不同。
以下是我的问题:
Q1 ==&gt; 在更高级别的JDK版本(如JDK 1.7)中进行了哪些更改,以便在某些情况下使通用类型行为有所不同,例如上述简单示例
Q2 ==&gt; 上述示例中的编译错误是否优于无编译错误?
请帮我解决这个问题。非常感谢你提前。