施用泛型和没使用泛型的区别
使用泛型和没使用泛型的区别
使用泛型的类
/** * 使用泛型的类 * @author chase * * @param <T> */ class Gen<T> { private T ob; //定义泛型的成员变量 public Gen(T ob) { this.ob = ob; } public T getOb() { return ob; } public void setOb(T ob) { this.ob = ob; } public void showType() { System.out.println("T的实际类型是:" + ob.getClass().getName()); } } public class GenDemo { public static void main(String args[]) { /** 定义泛型类Gen的一个Integer版本 */ Gen<Integer> intOb = new Gen<Integer>(88); intOb.showType(); int i = intOb.getOb(); System.out.println("value = " + i); System.out.println("============================"); /** 定义泛型类Gen的String版本 */ Gen<String> strOb = new Gen<String>("Hello Chase!"); strOb.showType(); String s = strOb.getOb(); System.out.println("value = " + s); System.out.println("============================"); /** 定义泛型类Gen的double版本 */ Gen<Double> dubOb = new Gen<Double>(3.1415926); dubOb.showType(); Double d = dubOb.getOb(); System.out.println("value = " + d); } }
没使用泛型的类
/** * 未使用泛型的GenDemo * @author Administrator * */ class Gen2 { private Object Ob; //定义一个普通类型成员 public Gen2(Object ob) { this.Ob = ob; } public Object getOb() { return Ob; } public void setOb(Object ob) { Ob = ob; } public void showType() { System.out.println("T的 实际类型是:" + Ob.getClass().getName()); } } public class GenDemo2 { public static void main(String[] args) { /** 定义类Gen2的一个Integer版本 */ Gen2 intOb = new Gen2(new Integer(88)); intOb.showType(); int i = (Integer)intOb.getOb(); System.out.println("value = " + i); System.out.println("================="); /** 定义类Gen2的一个String版本 */ Gen2 strOb = new Gen2(new String("Hello Chase!")); strOb.showType(); String s = (String)strOb.getOb(); System.out.println("value = " + s); } }
运行的结果都一样