起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > JavaSE面试题(六):泛型

JavaSE面试题(六):泛型

时间:2021-07-29 15:17:51来源:Java开发培训网 作者:Java开发教程网 已有: 名学员访问该课程

  快捷搜索:JavaSE面试题(六):泛型

前言: Q:什么是泛型? Java泛型( generics)是JDK 5中引⼊的⼀个新特性, 允许在定义类和接口的时候使⽤类型参数( type parame

Q:什么是泛型?

Java泛型( generics)是JDK 5中引⼊的⼀个新特性, 允许在定义类和接口的时候使⽤类型参数( type parameter) 。

声明的类型参数在使⽤时⽤具体的类型来替换。泛型最主要的应⽤是在JDK 5中的新集合类框架中。

泛型最⼤的好处是可以提⾼代码的复⽤性。以List接口为例,我们可以将String、 Integer等类型放⼊List中, 如不⽤泛型, 存放String类型要写⼀个List接口, 存放Integer要写另外⼀个List接口, 泛型可以很好的解决这个问题。

Q:什么是类型擦除?

通过类型参数合并,将泛型类型实例关联到同一份字节码上。

编译器只为泛型类型生成一份字节码,并将其实例关联到这份字节码上。

泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如 List在运行时仅用一个List来表示。这样做的目的,是确保能和Java 5之前的版本开发二进制类库进行兼容。你无法在运行时访问到类型参数,因为编译器已经把泛型类型转换成了原始类型。

类型擦除的主要过程如下:

1.将所有的泛型参数用其最左边界(最顶级的父类型)类型替换。

2.移除所有的类型参数。

Q:List<?> 和List<Object>的区别?

List 是一个未知类型的List,而List 其实是任意类型的List。

可以把List, List赋值给List,却不能把List赋值给 List。

Q:什么是泛型中的限定通配符和非限定通配符 ?

限定通配符:

对类型进行了限制。有两种限定通配符:

一种是 它通过确保类型必须是T的子类来设定类型的上界,

另一种是它通过确保类型必须是T的父类来设定类型的下界。

泛型类型必须用限定内的类型来进行初始化,否则会导致编译错误。

非限定通配符:

表示了非限定通配符,因为可以用任意类型来替代。

Q:泛型中K T V E ?object等的含义 ?

E - Element (在集合中使用,因为集合中存放的是元素)

T - Type(Java 类)

K - Key(键)

V - Value(值)

N - Number(数值类型)

?- 表示不确定的Java类型(无限制通配符类型)

Object - 是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T、E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换。

Q:编写一个泛型方法,让它能接受泛型参数并返回泛型类型 ?

1 public V put(K key, V value) {2 return cache.put(key, value);3 }

免责声明:内容来源于公开网络,若涉及侵权联系尽快删除!

文章出自:http://qh.itpxw.cn/peixun/software/202191301.html

文章标题:JavaSE面试题(六):泛型



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

你也许会喜欢如下的文章?
(责任编辑:深圳学历教育网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02
推荐内容