大家好,欢迎来到IT知识分享网。
Java基础 —— 泛型
泛型
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
理解
为了可以进一步理解泛型,我们先来看一个问题
需求:
编写一个程序,在ArrayList中添加三个对象,类中要有name、age属性,输出对象的name、age属性
- 首先,我们先用传统方法进行编写
package com.sxny; import java.util.ArrayList; public class text { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add(new Person("王五",55)); arrayList.add(new Person("李四",12)); arrayList.add(new Person("王五",8)); arrayList.add(new Animal("奶盖",2)); for (Object o:arrayList){ //增强for循环 Person person = (Person)o; System.out.println(person); } } } class Person{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } class Animal{ private String name; private int age; public Animal(String name,int age){ this.name = name; this.age = age; } @Override public String toString() { return "Animal{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
从上图我们可以看到,用传统方法,会出现ClassCastException异常, 其原因主要是传统方法中,需要进行类型的转换。Person在进入Arraylist中时会转换成Object类型,在取出时又会转回Person类型。
- 针对以上问题,现在我们利用泛型来解决
package com.sxny; import java.util.ArrayList; public class text { public static void main(String[] args) { ArrayList<Person> arrayList = new ArrayList<Person>(); arrayList.add(new Person("王五",55)); arrayList.add(new Person("李四",12)); arrayList.add(new Person("王五",8)); // arrayList.add(new Animal("奶盖",2)); for (Object o:arrayList){ //增强for循环 Person person = (Person)o; System.out.println(person); } } } class Person{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } class Animal{ private String name; private int age; public Animal(String name,int age){ this.name = name; this.age = age; } @Override public String toString() { return "Animal{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
在创建Arraylist时限制了添加元素的类型, Arraylist arraylist = new Arraylist()若发现类型不符合,则会报错,并且在遍历时无需类型的转换,因此,解决了ClassCastException异常的问题。
使用泛型的好处
- 编译时,检查添加的元素,增加了安全性。
- 无需数据类型的转换,提高了效率。
- 不再提示警告。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/165830.html