作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一些代码如下:
public class java_generic {
public static void main(String[] args) {
T t = new X();
t.<Object>m(new Object());
t.<String>m(new String());
}
static class T {
<E> void m (E e){
System.out.println("here is T");
}
}
static class X extends T {
void m (String o){
System.out.println("here is X");
}
}
}
据我了解,在类型删除之后,T
类将变成这样:
static class T {
void m (Object e){
System.out.println("here is T");
}
}
并且 m 重载了。
由于有 m(Object)
和 m(String)
,我希望结果是
here is T
here is X
然而,结果是
here is T
here is T
我想知道为什么结果会是这样。
最佳答案
您几乎回答了您自己的问题。你只需要完全遵守后果。对你的所有代码进行删除,你会得到:
public class java_generic {
public static void main(String[] args) {
T t = new X();
t.m(new Object());
t.m(new String());
}
static class T {
void m (Object e){
System.out.println("here is T");
}
}
static class X extends T {
void m (String o){
System.out.println("here is X");
}
}
}
这有希望表明 X.m
根本不会覆盖 T.m
,因此通过 T
引用的调用永远不会调用 X.m
.
关于Java泛型——删除概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34162305/
我是一名优秀的程序员,十分优秀!