为什么可以用两个具有相同签名的方法编译类?
"foo"方法只有不同的返回类型.
但是返回类型不是java中方法签名的一部分.
java编译器是否在这种情况下创建桥接方法?
如果是 - 真正的代码将如何?
foo方法有以下警告:
方法foo(GenClass)具有与类型测试中的另一种方法相同的擦除foo(GenClass)
如果取消注释bar方法,则bar方法将出现以下错误:
方法栏(GenClass)具有与类型测试中的另一种方法相同的擦除栏(GenClass)
class GenClass<T> {
}
public class test {
public static void main(String[] args) {
}
public static Integer foo(GenClass<Integer> criteria) {
System.out.println("Integer");
return null;
}
public static String foo(GenClass<String> criteria) {
System.out.println("String");
return null;
}
/*public static void bar(GenClass<Integer> criteria) {
System.out.println("Integer");
}
public static void bar(GenClass<String> criteria) {
System.out.println("String");
}*/
}
Run Code Online (Sandbox Code Playgroud)
D:\ tools\java\jdk1.6.0_37_32\bin> java -version
java version"1.6.0_38"
Java(TM)SE运行时环境(版本1.6.0_38-b05)
Java HotSpot(TM)64位服务器VM(建立20.13-b02,混合模式)
javac Java 6中有一个错误使得这个工作成功,但Java 7的其他Java编译器以及Java 7+中的Java编译器都会抛出编译错误.
有关详细信息,请参阅此其他帖子:
http://vanillajava.blogspot.co.uk/2011/02/with-generics-return-type-is-part-of.html
编辑
@Radek在评论部分发布了另一篇优秀的Stackoverflow帖子:
编辑2 我想我在这里找到了错误票:http: //bugs.java.com/view_bug.do?video_id = 6182950