泛型的概念和使用泛型的好处
作者:互联网
泛型的概念
在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。
使用泛型的好处
创建集合对象,不使用泛型
好处:
集合不使用泛型,黑默认的类型就是object类型,可以存储任意类型的数据弊端:
不安全,
会引发异常
将运行时期的ClassCastException,转移到了编译时期变成了编译失败
避免了类型强转的麻烦。
public static void main(String[] args) { show01(); show02(); } private static void show02() { ArrayList<String> list = new ArrayList<>(); list.add("abc"); //list.add(1 );//add(java.lang.string)in ArrayList cannot be applied to (int) //使用迭代器遍历list集合 Iterator<String> it = list.iterator(); while (it.hasNext()) { String s = it.next(); System.out.println(s + "- >" + s.length()); } } private static void show01() { ArrayList list = new ArrayList(); list.add("abc"); list.add(1); //使用迭代器遍历List集合/获取迭代器 Iterator it = list.iterator(); //使用迭代器中的方法hasNext和next遍历集合 while (it.hasNext()) { //取出元素也是object类型 Object obj = it.next(); System.out.println(obj); //想要使用string类特有的方法, Length获取字符串的长度;不能使用多态 Object obj1 = "abc";//需要向下转型 //会抛出CtasscastException类型转换异常,不能把Integer类型转换为string类型 String s = (String) obj1; System.out.println(s.length()); } }
public class GenericDemo2 { public static void main(String[] args) { Collection<String> list = new ArrayList<String>(); list.add("abc"); list.add("itcast"); // list.add(5);//当集合明确类型后,存放类型不一致就会编译报错 // 集合已经明确具体存放的元素类型,那么在使用迭代器的时候,迭代器也同样会知道具体遍历元素类型 Iterator<String> it = list.iterator(); while(it.hasNext()){ String str = it.next(); //当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型 System.out.println(str.length()); } } }
public class Demo01Generic { public static void main(String[] args) { show02(); } /* 创建集合对象,使用泛型 好处: 1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型 2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错) 弊端: 泛型是什么类型,只能存储什么类型的数据 */ private static void show02() { ArrayList<String> list = new ArrayList<>(); list.add("abc"); //list.add(1);//add(java.lang.String)in ArrayList cannot be applied to (int) //使用迭代器遍历list集合 Iterator<String> it = list.iterator(); while(it.hasNext()){ String s = it.next(); System.out.println(s+"->"+s.length()); } } /* 创建集合对象,不使用泛型 好处: 集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据 弊端: 不安全,会引发异常 */ private static void show01() { ArrayList list = new ArrayList(); list.add("abc"); list.add(1); //使用迭代器遍历list集合 //获取迭代器 Iterator it = list.iterator(); //使用迭代器中的方法hasNext和next遍历集合 while(it.hasNext()){ //取出元素也是Object类型 Object obj = it.next(); System.out.println(obj); //想要使用String类特有的方法,length获取字符串的长度;不能使用 多态 Object obj = "abc"; //需要向下转型 //会抛出ClassCastException类型转换异常,不能把Integer类型转换为String类型 String s = (String)obj; System.out.println(s.length()); } } }
标签:String,概念,ArrayList,list,好处,add,类型,泛型 来源: https://www.cnblogs.com/yuzong/p/16448619.html