面试题集:泛型

1.Java中的泛型是什么 ? 使用泛型的好处是什么?

        泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

好处:

        1、类型安全,提供编译期间的类型检测

       2、前后兼容

        3、泛化代码,代码可以更多的重复利用

        4、性能较高,用GJ(泛型JAVA)编写的代码可以为java编译器和虚拟机带来更多的类型信息,这些信息对java程序做进一步优化提供条件。


2.Java的泛型是如何工作的 ? 什么是类型擦除 ?如何工作?

        1、类型检查:在生成字节码之前提供类型检查

        2、类型擦除:所有类型参数都用他们的限定类型替换,包括类、变量和方法(类型擦除)

        3、如果类型擦除和多态性发生了冲突时,则在子类中生成桥方法解决

        4、如果调用泛型方法的返回类型被擦除,则在调用该方法时插入强制类型转换

类型擦除

        所有类型参数都用他们的限定类型替换:

比如T->Object   ? extends BaseClass->BaseClass

如何工作

        泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如 List<String>在运行时仅用一个List来表示。这样做的目的,是确保能和Java 5之前的版本开发二进制类库进行兼容。你无法在运行时访问到类型参数,因为编译器已经把泛型类型转换成了原始类型。根据你对这个泛型问题的回答情况,你会得到一些后续提问,比如为什么泛型是由类型擦除来实现的或者给你展示一些会导致编译器出错的错误泛型代码。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值