关于泛型的问题 本帖最后由 u014657378 于 2014-10-17 18:00:21 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类只有一个,没有什么 List<A> 的父类,这个类就是 List,只是当使用了泛型时,编译器会帮我们验证放进来的对象是不是期望的类型,仅此而已。List<A> a = ... 只是表示只有A及A的子类型的对象能添加进来,List <? extends A> 表示 A 的所有子类型对象都可以添加进来。反正,它只是用来验证放进去的对象。没有其它用途。我们用代码实践来验证,如图,你会发现泛型仅是”让我们少敲几下键盘“。 泛型只是给集合指定类型,里面的内容不会改变集合是不存在继承关系Colletion是接口,List和Set是两个子接口亲懂了吗 看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗? 谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗? 谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?应该是你说的这样的。List中存放Shape的子类。 谢谢你的回复。看疯狂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];这样应该是可以的啊。 谢谢你的回复。看疯狂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); 关于Jtable分页的问题 java有关静态类 麻烦解释一下里面的几句语言:关于RandomAccessFile的。 问一个Producer-Consumer模型问题 初学JAVA,这个为什么会出错? http://community.csdn.net/Expert/topic/3232/3232024.xml?temp=.5569879 新增行并返回主键值问题 学了n天Java,突然想到一个问题:为什么要面向对象? 急用,请问如何将字节数组byte[]转换成inputStream流?? 为什么老找不到javax.mail.*;? JAVA线程问题 如何用Java模拟ATM系统实现功能
集合是不存在继承关系
Colletion是接口,List和Set是两个子接口
亲懂了吗
List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类
List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
谢谢你的回复。看疯狂JAVA讲义有点疑问,他定义了一个抽象Shape类,Circle和Rectangle继承了Shape,书中有这样一句话://它表示所有Shape泛型List的父类
List<? extends Shape>我对这句理解有点问题,只有List这一个类,泛型只是规定了里面的存放元素的类型,? extends Shape表示Shpe的子类啊,只是?表示这个子类的类型未知,所以我认为List<? extends Shape>中中只能存放Shape的子类,是这样的吗?
应该是你说的这样的。List中存放Shape的子类。
谢谢你的回复。看疯狂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];这样应该是可以的啊。
谢谢你的回复。看疯狂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);