首页 / JAVA / Java中泛型在集合框架中的应用
Java中泛型在集合框架中的应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中泛型在集合框架中的应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2415字,纯文字阅读大概需要4分钟。
内容图文
![Java中泛型在集合框架中的应用](/upload/InfoBanner/zyjiaocheng/1139/6b511c3f23184275adcdf278747c00dc.jpg)
泛型是Java中的一个重要概念,上一篇文章我们说过,当元素存入集合时,集合会将元素转换为Object类型存储,当取出时也是按照Object取出的,所以用get方法取出时,我们会进行强制类型转换,并且通过代码也可以看出来,我们放入其他类型时,如字符串,编译器不会报错,但是运行程序时会抛出类型错误异常,这样给开发带来很多不方便,用泛型就解决了这个麻烦
泛型规定了某个集合只能存放特定类型的属性,当添加类型与规定不一致时,编译器会直接报错,可以清楚的看到错误
当我们从List中取出元素时直接取出即可,不用类型转换,因为已经规定了里面存放的只能是某种类型
集合中中除了存入定义的泛型类型的实例,还可以存入泛型类型子类的实例
泛型不能是基本类型,只能是引用类型,如果必须使用基本类型,可以使用基本类型的包装类
对上一篇文章的例子做一个简单的优化,就很容易理解泛型啦
课程类,Course.java代码没变
1 /* 2 * 课程类,规定课程结构,用于向集合中传入此类型的元素 3 */ 4 5 public class Course { 6 public String id; 7 public String name; 8 public Course(String id,String name){ 9 // 含参构造方法 10 this.id = id; 11this.name = name; 12 } 1314public Course(){ 15//无参构造器,为了子类初始化隐式构造方法16 } 17 }
课程子类,ChildCourse.java,为了测试泛型的子类型也可以存入List集合
1 public class ChildCourse extends Course { 2//什么都不写,全部继承自父类3 }
泛型测试类,TestGeneric.java
1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class TestGeneric { 5 6 public List<Course> courses; //定义泛型类型的courses属性,规定List中元素只能是Course类型或者子类型的属性 7 8public TestGeneric(){ 9this.courses = new ArrayList<Course>(); //初始化courses属性,初始化的时候也必须添加泛型10 } 11/*12 * 向List中添加元素 13*/14publicvoid testAdd(){ 15 Course cr1 = new Course("1","数据结构"); 16 courses.add(cr1); 17//下面添加字符串类型不符合泛型定义的类型,编译器会报错 18//courses.add("string");19 Course cr2 = new Course("2","Java程序设计"); 20 courses.add(cr2); 21 } 2223/*24 * 遍历List中的元素输出 25*/26publicvoid testForeach(){ 27 System.out.println("有以下课程:"); 28//因为courses中存储的肯定是Course类型的元素,所以直接遍历即可,不用额外操作29for(Course cr:courses){ 30 System.out.println("课程:" + cr.id + ":" + cr.name); 31 } 32 } 3334/*35 * 测试泛型集合添加泛型子类型对象的实例 36*/37publicvoid testChild(){ 38 ChildCourse ccr = new ChildCourse(); //子类型是不可以直接传入参数的39 ccr.id = "3"; 40 ccr.name = "我是泛型子类型课程对象"; 41 courses.add(ccr); //添加正常42 } 4344/*45 * 泛型不能使用基本类型 46*/47publicvoid testBasicType(){ 48//当规定泛型类型为int时,下面编译器会报错,但是使用包装类没问题 49//List<int> list = new ArrayList<int>();50 List<Integer> list = new ArrayList<Integer>(); 51 list.add(1); //自动装箱,把1变为Inreger类型的52 System.out.println("基本类型包装类元素:" + list.get(0)); 53 } 5455publicstaticvoid main(String[] args) { 56 TestGeneric tg = new TestGeneric(); 57 tg.testAdd(); 58 tg.testForeach(); 59 tg.testChild(); 60 tg.testForeach(); 61 tg.testBasicType(); 62 } 6364 }
由代码可以看出对集合如何定义泛型,引用属性的添加,子类型的添加、遍历的时候更加简单了,只能添加基本类型的包装类属性
以上只是简单体现了集合如何使用泛型的属性,另外属性的修改,删除方法都基本一致,所以没有再重复一遍,其实泛型应用不止这些,确实能解决很多开发中的麻烦
原文:http://www.cnblogs.com/freeweb/p/4836376.html
内容总结
以上是互联网集市为您收集整理的Java中泛型在集合框架中的应用全部内容,希望文章能够帮你解决Java中泛型在集合框架中的应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。