1. 为什么会有泛型呢?
(1)早期的Object类型可以接收任意的对象类型,但是在实际使用中,会有类型转换的问题,也存在这隐患,所以Java提供了泛型来解决这个安全问题。
2. 泛型类的使用:
(1)首先定义一个泛型类ObjectTool,如下:
1 package cn.itcast_04; 2 3 /* 4 * 泛型类:把泛型定义在类上 5 */ 6 public class ObjectTool<T> { 7 private T obj; 8 9 public T getObj() { 10 return obj; 11 } 12 13 public void setObj(T obj) { 14 this.obj = obj; 15 } 16 }
(2)编写一个泛型类的测试:
1 package cn.itcast_04; 2 3 /* 4 * 泛型类的测试 5 */ 6 public class ObjectToolDemo { 7 public static void main(String[] args) { 8 // ObjectTool ot = new ObjectTool(); 9 // 10 // ot.setObj(new String("风清扬")); 11 // String s = (String) ot.getObj(); 12 // System.out.println("姓名是:" + s); 13 // 14 // ot.setObj(new Integer(30)); 15 // Integer i = (Integer) ot.getObj(); 16 // System.out.println("年龄是:" + i); 17 18 // ot.setObj(new String("林青霞")); 19 // // ClassCastException 20 // Integer ii = (Integer) ot.getObj(); 21 // System.out.println("姓名是:" + ii); 22 23 System.out.println("-------------"); 24 25 ObjectTool<String> ot = new ObjectTool<String>(); 26 // ot.setObj(new Integer(27)); //这个时候编译期间就过不去 27 ot.setObj(new String("林青霞")); 28 String s = ot.getObj(); 29 System.out.println("姓名是:" + s); 30 31 ObjectTool<Integer> ot2 = new ObjectTool<Integer>(); 32 // ot2.setObj(new String("风清扬"));//这个时候编译期间就过不去 33 ot2.setObj(new Integer(27)); 34 Integer i = ot2.getObj(); 35 System.out.println("年龄是:" + i); 36 } 37 }
运行结果如下:
时间: 2024-10-23 09:55:04