• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java数组、泛型、集合在多态中的使用及对比

java 搞代码 4年前 (2022-01-05) 39次浏览 已收录 0个评论

本文主要介绍了java数组、泛型、集合在多态中的使用及对比。具有很好的参考价值,下面跟着小编一起来看下吧

我们在使用数组,泛型集合的过程中不可避免的会碰到多态,或者说什么情况下能如何使用父数组引用子数组(集合、泛型)呢?

数组在多态中的使用

元素为父类型的数组引用可指向元素为子类型的数组对象

当数组被调用时由当前引用确定数组元素的类型

当元素为父类型的数组引用指向了元素为子类型的数组对象时,不可通过父类型的数组引用向集合加入除子类型及其下层级的之外的元素(可通过编译,运行过程出错)

 /*验证: *animals和dogs可以引用同一个数组 *当animals引用数组时,数组元素为Animal类型 *当dogs引用数组时,数组元素为Dog类型 */ public class Animal{ private void showClass(){ System.out.println("数组元素为Animal类型"); } public static void main(String[] args){ //animals和dogs可以引用同一个数组 Dog[] dogs = {new Dog(), new Dog()}; Animal[] animals = dogs; //当animals引用数组时,数组元素为Animal类型 animals[0].showClass(); //当dogs引用数组时,数组元素为Dog类型 dogs[0].showClass(); //不可通过父类型的数组引用向集合加入除子类型及其下层级的之外的元素(可通过编译,运行过程出错) animals[0] = new Animal(); } } class Dog extends Animal{ public void showClass(){ System.out.println("数组元素为Dog类型"); } } 

泛型在多态中的使用

ArrayList无法引用ArrayList

 /*验证: *animals无法引用dogs数组 * */ import java.util.*; public class Animal{ public static void main(String[] args){ //animals无法引用dogs数组 ArrayList dogs = new ArrayList(); ArrayList animals = dogs;  /* 无法通过编译 */ } } class Dog extends Animal{ } 

为了弥补泛型的缺陷,java引入了一种“万用字符”――ArrayList

此类型集合可引用任何参数上继承、实现了参数类型(包括参数类型本身)的集合

 /*万用字符 *animals可以引用dogs集合 *当animals引用集合时,集合元素为Dog类型 *当dogs引用集合时,集<p style="color:transparent">来源gao!daima.com搞$代!码网</p>合元素为Dog类型 *无法通过animals对集合进行修改 */ import java.util.*; public class Animal{ public void showClass(){ System.out.println("集合元素为Animal类型"); } public static void main(String[] args){ //animals可以引用dogs数组 ArrayList dogs = new ArrayList(); dogs.add(new Dog()); ArrayList animals = dogs; //当animals引用集合时,集合元素为Dog类型 animals.get(0).showClass(); //当dogs引用集合时,集合元素为Dog类型 dogs.get(0).showClass(); //无法通过animals对集合进行修改(无法通过编译) //animals.add(new Dog()); } } class Dog extends Animal{ public void showClass(){ System.out.println("集合元素为Dog类型"); } } 

集合在多态中的使用

集合可引用ArrayList集合

以上就是java数组、泛型、集合在多态中的使用及对比的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java数组、泛型、集合在多态中的使用及对比

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址