记录:java泛型为什么只能用引用类型,不能使用基本类型?

247 阅读1分钟

最近准备面试,有被问到ava泛型为什么只能用引用类型,不能用基本类型,当时回答不出来所以然,回来在网上搜索了一下,大概原因了解了之后又去找《Java核心技术卷1(原来书第九版)》里面有没得相关的资料,看到有说明,在此记录一下。

12.6.1 不能用基本类型实例化类型参数

不能用类型参数代替基本类型。因此,没有Pair<double>,只有Pair<Double>。当然,其原因是类型擦除。擦除之后,Pair类含有Object类型的域,而Object不能存储double值。

这的确令人烦恼。但是,这样做与Java语言中基本类型的独立状态相一致。这并不是一个致命的缺陷—只有8种基本类型,当包装器类型(wrapper type)不能接受替换时,可以使用独立的类和方法处理它们。