为什么说 ArrayList 是List的子类 但不等于说ArrayList <Integer> 是List<Integer>的子类 ?
解决方案 »
- Exception occurred during event dispatching 数据库操作异常 不知怎么解决
- 关于断言和序列化的疑问
- 帮我看看这个这个树的js 要实现当选某一个父亲结点时子结点全被选中
- 问下怎么JTable里放容器
- java 操作符问题
- 请教关于文件读取的问题
- Jtree多选问题,如何获得选择的那些节点的路径??????
- 如何使位于firewall or proxy的机子通过Internet接收到另一机子用JMStudio发送的语音数据?
- Test类究竟实现的是哪个接口中的方法
- eclipse relo插件如何使用?
- 求助,我该肿么办???
- 浅谈java线程定时任务timerTask
ArrayList <Integer> 是List<Integer>的子类!可以这么理解的。java中泛型的用途只是为了指定类型,供编译使用,当然也可以优化代码接口,简化代码书写方式。java中的泛型其实已经偏离了泛型 的概念了,个人感觉。
这句话本身就有待商榷。敢问此语句出处?个人认为,你也可以说“ArrayList <Integer> 是List<Integer>的子类”,只是我们一般不那么说。
就好比,我们会说“孔鲤是孔子的儿子”,但不会说“穿长袖的孔鲤是穿长袖孔子的儿子”。父子类关系,在java诞生之初就有的(jdk1.0),泛型是 jdk5.0 以后添加的某一属性。
表达父子类关系也是无关此属性的。(好比上面的例子,血缘关系和衣着无关)
比如向ArrayList放入一个Integer,取出的时候必须强制类型转换Integer i = (Integer)arraylist.get(0);
ArrayList<integer>就告诉大家要放的就是integer类型,其他的类型放不了,取出来的就是Integer。
泛型对extends和implements没有影响,只是限定了类型,ArrayList <Integer> 就是一个实现了List<Integer>接口的类。要注意的是类 B extends A,但ArrayList<B>并不是一个ArrayList<A>