我的Generic类型示例在不同的JDK版本中有不同的行为,会发生什么?

Mou*_*ava 10 java generics java-7

我用泛型类型写了一个简单的程序.但是,这个简单的示例在不同的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;
}

}
Run Code Online (Sandbox Code Playgroud)

场景#1 ==>在JDK 1.7上,出现编译错误

在此输入图像描述

`Method method(List<String>) has the same erasure method(List<E>) as another method in type GenericTypes.`
Run Code Online (Sandbox Code Playgroud)

方案#2 ==>在JDK 1.6或1.5上,没有编译错误.

控制台中代码和输出的屏幕截图如下:

在此输入图像描述

众所周知,自JDK 1.5以来就引入了Generic Type.但是,通过上面的简单示例,它在不同的JDK版本中表现不同.

这是我的问题:

Q1 ==> 在更高的JDK版本(如JDK 1.7)中,在某些情况下,如上述简单示例,使通用类型行为有所不同?

Q2 ==> 上面的例子中编译错误是否比没有编译错误好?

这个你能帮我吗.非常感谢你提前.