本帖最后由 ⒈心只霸占沵 于 2014-4-21 22:04 编辑
- package Other;
- import java.util.*;
- class GenericDemo
- {
- public static void main(String[] args){
- copy1(new Integer[10],new String[10]);//为什么这一句就不报错呢,看了张老师的视频的解释,我理解困难
- copy2(new ArrayList<String>(),new Integer[10]);
- }
- private static <T> void copy1(T[] a, T[] b){
- /*这个方法,当你copy1(new Integer[10],new String[10]);这样调用的时候第一个参数为Integer[]类型,第二个参数为String[]类型,他会向上提取,就会去Integer[]和String[]的并集也就是Object[],这里就是多态的体现
- */
- }
- private static <T> void copy2(ArrayList<T> a, T[] b){
- /*这个方法,当你copy2(new ArrayList<String>(),new Integer[10]),这样调用就已经把T定位String类型, 因为如果是泛型定义类型是这样的话 List<T> list=new ArrayList<String>();这个T必须是String类型,如果是其他类型编译不通过,所以T已经被new ArrayList<String>(),这个实参固定了类型,只能为String,所以第二个参数传递的时候传递Integer就会报错
- */
- }
- }
复制代码 |