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

时间:2013-11-28 14:46:01

标签: 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;
}

}

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

enter image description here

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

场景#2 ==&gt;在JDK 1.6或1.5上,没有编译错误

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

enter image description here

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

以下是我的问题:

Q1 ==&gt; 在更高级别的JDK版本(如JDK 1.7)中进行了哪些更改,以便在某些情况下使通用类型行为有所不同,例如上述简单示例

Q2 ==&gt; 上述示例中的编译错误是否优于无编译错误?

请帮我解决这个问题。非常感谢你提前。

0 个答案:

没有答案