本帖最后由 u014657378 于 2014-10-17 18:00:21 编辑

解决方案 »

  1.   

    类只有一个,没有什么 List<A> 的父类,这个类就是 List,只是当使用了泛型时,编译器会帮我们验证放进来的对象是不是期望的类型,仅此而已。List<A> a = ... 只是表示只有A及A的子类型的对象能添加进来,List <? extends A> 表示 A 的所有子类型对象都可以添加进来。反正,它只是用来验证放进去的对象。没有其它用途。我们用代码实践来验证,如图,你会发现泛型仅是”让我们少敲几下键盘“。
      

  2.   

    泛型只是给集合指定类型,里面的内容不会改变
    集合是不存在继承关系
    Colletion是接口,List和Set是两个子接口
    亲懂了吗
      

  3.   

    看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类
    List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
      

  4.   


    谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类
    List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
      

  5.   


    谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类
    List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
    应该是你说的这样的。List中存放Shape的子类。
      

  6.   


    谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类
    List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
    应该是你说的这样的。List中存放Shape的子类。
    今天在书上看到这样一个例子。
    private List<String>[] playersCards = new List[PLAY_NUM];
    创建了一个装List<String>的数组,这个数组装的是List<String>元素,而每个List中的元素又是String的,但是为什么我写private List<String>[] playersCards = new List<String>[PLAY_NUM];就会报错呢?我参照数组的初始化规则,int[] a = new int[5];这样应该是可以的啊。
      

  7.   


    谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类
    List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
    应该是你说的这样的。List中存放Shape的子类。
    今天在书上看到这样一个例子。
    private List<String>[] playersCards = new List[PLAY_NUM];
    创建了一个装List<String>的数组,这个数组装的是List<String>元素,而每个List中的元素又是String的,但是为什么我写private List<String>[] playersCards = new List<String>[PLAY_NUM];就会报错呢?我参照数组的初始化规则,int[] a = new int[5];这样应该是可以的啊。ArrayList 可以方便的实现列表操作, 但有时候需要建立一个ArrayList数组.
    首先想到的是类似下面的方法:
    ArrayList<int>[] list = new ArrayList<int>()[N];
    但会出现错误.
    改为ArrayList[] list = new ArrayList[N];
    会有警告.这是因为Java没有范型数组,可以参考以下方法实现类似功能:
    ArrayList<ArrayList<Integer>> als = new ArrayList<ArrayList<Integer>> (); 
    ArrayList<Integer> a1 = new ArrayList<Integer>();
    ArrayList<Integer> a2 = new ArrayList<Integer>(); 
    ArrayList<Integer> a3 = new ArrayList<Integer>(); 
    ArrayList<Integer> a4 = new ArrayList<Integer>(); 
    然后
    als.add(a1); 
    als.add(a2); 
    als.add(a3); 
    als.add(a4);