Java泛型基础面试题及详细答案(实战口语版).docxVIP

  • 1
  • 0
  • 约3.54千字
  • 约 5页
  • 2026-07-27 发布于河北
  • 举报

Java泛型基础面试题及详细答案(实战口语版).docx

Java泛型基础面试题及详细答案(实战口语版)

1.什么是Java泛型?为什么要使用泛型?

参考答案:

泛型就是参数化类型,简单说就是把数据类型变成参数,在定义类、方法、接口的时候不指定具体类型,在使用的时候再确定具体类型。

日常开发用泛型主要解决三个核心问题:

第一,编译期类型检查。不用泛型的时候,集合可以存任意Object类型,编译不报错,运行才会报类型转换异常;用了泛型,类型不匹配直接编译失败,提前规避问题。

第二,避免强制类型转换。从集合取数据时,不用手动强转,代码更简洁,也不会出现强转异常。

第三,代码复用。一套代码可以适配多种数据类型,不用为每种类型单独写一套工具类或方法。

补充:泛型只在编译阶段生效,运行时会被擦除,不存在泛型类型。

2.泛型的本质是什么?什么是类型擦除?

参考答案:

泛型的底层本质就是编译期语法糖。

类型擦除是泛型最核心的机制:Java编译器在编译带泛型的代码时,会把所有泛型标识(T、E、?这些)全部擦除,替换成原始类型(默认Object,有上界就替换成上界类型),同时自动插入强制类型转换代码。

举个例子:定义ListString,编译之后字节码里就是List,和原始的List一模一样。

这也是为什么说泛型只存在于编译期,运行时无效。

常见擦除规则:

1.无边界泛型T→擦除为Object

2.有上界泛型TextendsNum

文档评论(0)

1亿VIP精品文档

相关文档