java generic

作者:原创时间:2022-03-31
文档

很多朋友都想知道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.
 * @param  the 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());

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

以上就是小编今天的分享,希望可以帮到大家。

显示全文
java enterprise java environment java epoll java error java escape java event java exchange java execute 微信群怎么找 怎么导出微信聊天记录 苹果手机怎么恢复出厂设置 qq怎么清理缓存和垃圾清理 朋友圈怎么转发 微信分组怎么删除 两个excel如何独立显示 excel怎么排序 计算机管理怎么打开 java jep java jetty java jit java enhancer java generator java future java encapsulation java empty java email java ehcache java echarts java formatter java ecc加密 java fork java foreach循环 java ear java flume java dynamic java dto java drools java flink java dowhile java flatmap