很多朋友都想知道java generic是什么?下面就一起来了解一下吧~
java generic(泛型):一般类型,也可以为任何类型,泛型的本质是“参数化类型”,即所操作的数据类型被指定为一个参数,泛型是在JDK1.5中引入的特性。
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型,而不是在运行时才出现错误。在实际编程中,会出现很多这样的情况:同样的方法,只是数据类型不同。现在如果想申明一个Box类,可以存放所有基本数据类型包装类的对象,可以有以下写法:
public class Box { private Integer object1; public void set(Integer object1) { this.object1 = object1; } public Integer get() { return object1; } private Double object2; public void set(Double object2) { this.object2 = object2; } public Double get() { return object2; } }
这样编程,会出现大量的冗余代码,大家都知道Java中的所有类都继承于Object类,根据“里式替换原则”,可以写成这样:
public class Box { private Object object; public void set(Object object) { this.object = object; } public Object get() { return object; } }
既然申明了Object类型,意味着除了8个原始数据类型,还可以传递其他任意类型。如果set了一个Integer对象,get用作String类型,程序在运行时会报错,但是却能通过编译的类型检查,将上面的Box类改用泛型来实现就可以很好的解决这个问题。
/** * Generic version of the Box class. * @paramthe type of the value being boxed */ public class Box { // T stands for "Type" private T t; public void set(T t) { this.t = t; } public T get() { return t; } } public static void main(String[] args) { Box integerBox = new Box (); Box stringBox = new Box (); integerBox.add(new Integer(10)); stringBox.add(new String("泛型测试")); System.out.printf("整型值为 :%d\n\n", integerBox.get()); System.out.printf("字符串为 :%s\n", stringBox.get());
}使用泛型有的好处:编译时强类型检查、无需手动进行类型转换、可以实现复用,编写通用算法。
以上就是小编今天的分享,希望可以帮到大家。