泛型
1.泛型的概念

2.使用泛型和不适用泛型的区别
package day7.demo1; /* * 什么情况下使用泛型? 不知道使用什么类型的时候使用泛型 *E e :Element 元素 * T t:Type 类型 * */ import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Iterator; public class 泛型 { public static void main(String[] args) { nousingfx(); } /*不使用泛型 好处:集合不适用泛型,默认就是object类型,可以存储任意类型的数据 弊端:不安全,容易引发异常 * * * */ public static void nousingfx(){ ArrayList list=new ArrayList(); list.add("string1"); list.add(1); //遍历集合: Iterator it = list.iterator(); while (it.hasNext()){ Object s=it.next(); System.out.println(s); // 多态,不能使用子类特有有的方法 object obj="abc",需要向下转型 String s1=(String)s; //存的时候,存的是任意类型,当遇到1 时候 还使用字符串的特有方法s.length() 回报错,这种错误在运行期间才发现:ClassCastException System.out.println(((String) s).length()); } } /*使用泛型 好处:1.避免类型转化的麻烦,取出什么就是什么类型 2.把运行期异常(代码运行之后回抛出异常),提升到了编译器(写代码的时候回报错) 弊端:泛型是什么类型,只能存储什么类型的数据。 * * * */ public static void usingfx(){ ArrayList<String> arrs=new ArrayList<>(); arrs.add("string1"); arrs.add("string2"); //遍历集合: Iterator<String> its = arrs.iterator(); while (its.hasNext()){ String s=its.next(); System.out.println("使用字符串特有的功能:字符串的长度是"+s.length()); } } }
3.自定义泛型类
package day7.demo1; public class customGeneric <E>{ private E Name; public E getName() { return Name; } public void setName(E name) { Name = name; } }
使用:
package day7.demo1; public class customGenericDemo { public static void main(String[] args) { //创建String 类型的自定发现泛型类 customGeneric <String> cs=new customGeneric<>(); //添加string 类型的数据 cs.setName("string1"); System.out.println(cs.getName()); //创建Integer 类型的自定发现泛型类 customGeneric <Integer> cit=new customGeneric<>(); //添加string 类型的数据 cit.setName(1); System.out.println(cit.getName()); } }
3.自定义泛型方法
浙公网安备 33010602011771号