当前位置:懂科普 >

IT科技

> java generic

java generic

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

很多朋友都想知道java generic是什么?下面就一起来了解一下吧~

java generic(泛型):一般类型,也可以为任何类型,泛型的本质是“参数化类型”,即所操作的数据类型被指定为一个参数,泛型是在JDK1.5中引入的特性。

java generic

泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型,而不是在运行时才出现错误。在实际编程中,会出现很多这样的情况:同样的方法,只是数据类型不同。现在如果想申明一个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. * @param <T> the type of the value being boxed */public class Box<T> {    // 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<Integer> integerBox = new Box<Integer>();    Box<String> stringBox = new Box<String>();    integerBox.add(new Integer(10));    stringBox.add(new String("泛型测试"));    System.out.printf("整型值为 :%d", integerBox.get());    System.out.printf("字符串为 :%s", stringBox.get());

}使用泛型有的好处:编译时强类型检查、无需手动进行类型转换、可以实现复用,编写通用算法。

标签: generic java
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/3d904m.html