黑马程序员技术交流社区
标题:
带泛型方法在子父类中的重载疑问?
[打印本页]
作者:
施俊
时间:
2012-4-20 09:53
标题:
带泛型方法在子父类中的重载疑问?
如果在父类中有方法:
public void applyVector(Vector<Number> v){}
在子类中有方法:
public void applyVector(Vector<Integer> v){}
这算不算覆盖呢?
另外在去类型化是在哪个阶段?编译时期还是运行时期?内存中是否有泛型存储的位置?
要是在同一个类中定义了以上两个方法,是不是不能通过呢?
作者:
毕博
时间:
2012-4-20 17:18
泛型在编译时期就已经限定好了,如果传进去什么类型,就固定了。
这两个在一起是会报错的。Method applyVector(Vector<Integer>) has the same erasure applyVector(Vector<E>) as another method in type Demo
等待运行的时候就固定在你之前调用的参数。
作者:
徐鑫
时间:
2012-4-20 19:04
泛型是编译时的,可用以下代码证明,runtime时,泛型不存在了
ArrayList<String> list = new ArrayList <String>() ;
ArrayList <Integer> list2 = new ArrayList <Integer>();
//true;字节码相同,说明泛型是提供给编译器使用的,在runtime时没有泛型
System.out.println(list.getClass() == list2.getClass());
作者:
岳民喜
时间:
2012-4-20 19:16
反射的例子就能证明,泛型不在并内存中,只存在编译时期,反射可以向定义了泛型的集合中插入其他类型的值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2