泛型的概述
泛型的概述:
泛型是JDK5中引入的特性,它提供了编译时类型的安全检测机制,该机制允许在编译时检测到非法的类型,他的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数
泛型的定义格式:
- :指定一种的格式.这里的类型可以看成是形参
- :指定多种类型的格式,多种类型之间用逗号隔开.这里的类型可以看成是形参
- 将来具体调用时候给定的类型可以看成是形参,并且实参的类型只能是引用数据类型
以图文和代码的形式进行讲解:
以存储字符串为例
无泛型下
package Demo;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class Demo { public static void main(String[] args) { //建立Collection集合(有泛型) Collection c=new ArrayList(); //添加集合内容 c.add("菜徐琨"); c.add("沸羊羊"); c.add("美羊羊"); c.add(11); //用Iterator接口来遍历 Iterator i = c.iterator(); while(i.hasNext()){// Object next = i.next(); String next = (String)i.next(); System.out.println(next); } }}
输入的内容
菜徐琨
沸羊羊
美羊羊
Exception in thread “main” java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at Demo.Demo.main(Demo.java:33)
无泛型下的图文解释
有泛型下
package Demo;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class Demo { public static void main(String[] args) { //建立Collection集合(有泛型) Collection<String> c=new ArrayList<>(); //添加集合内容 c.add("菜徐琨"); c.add("沸羊羊"); c.add("美羊羊"); //c.add(11); 去掉情况下可以执行 //用Iterator接口来遍历 Iterator<String> i = c.iterator(); while(i.hasNext()){ String next = i.next(); System.out.println(next); } }}
输出的内容
菜徐琨
沸羊羊
美羊羊
有泛型下的图文解释,内容代码里含有c.add(11);的情况下