首页 > 其他分享 >面试--泛型

面试--泛型

时间:2022-08-22 23:01:26浏览次数:46  
标签:面试 -- List 通配符 限定 擦除 类型 泛型


☺ 面试聊聊泛型?

泛型是jdk5的一个新特性,Java5之前,在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCastException

【好处】:使用泛型可以让代码更加简洁不需要进行强制类型转化,同时让代码更加健壮,在编译器间没有警告,运行期间就不会出现ClassCastException异常。




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

泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。

例如 List在运行时仅用一个List来表示。这样做的目的,是确保能和Java5之前的版本开发二进制类库进行兼容

你无法在运行时访问到类型参数,因为编译器已经把泛型类型转换成了原始类型


  • 为什么泛型是由类型擦除来实现?

    所有泛型类的类型参数在编译时都会被擦除,虚拟机运行时中没有泛型,只有普通类和普通方法




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

限定通配符对类型进行了限制。有两种限定通配符,一种是<? extends T>它通过确保类型必须是T的子类来设定类型的上界

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

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

另一方面<?>表示了非限定通配符,因为<?>可以用任意类型来替代。



☺ 可以把List传递给一个接受List参数的方法吗?

不可以,两者是泛型类型不同,编译错误。



☺ Array中可以用泛型吗?

不可以,Array不支持泛型

标签:面试,--,List,通配符,限定,擦除,类型,泛型
From: https://www.cnblogs.com/shan333/p/16614554.html

相关文章

  • 8.22
    ABC265F题意:给定两个\(n\)维空间上的点,问有多少个点距离这两个点的曼哈顿距离不超过\(m\)?\(n\leq100\),其他数字小于等于\(1000\)题解:感谢\(SSRS\)大神考虑一个二维......
  • 《GB14925-2010》PDF下载
    《GB14925-2010实验动物环境及设施》PDF下载《GB14925-2010》简介本标准规定了实验动物及动物实验设施和环境条件的技术要求及检测方法,同时规定了垫料、饮水和笼具的......
  • python学习Day50
    Day50今日内容概要前端简介前端与后端前端的学习前端核心基础HTTP超文本传输协议四大特性数据格式响应状态码HTML简介简介HTML注释语法HTML文件结构......
  • PlantUML 安装与使用(Mac/Idea)
    1.安装确保本机可以使用brew指令brewinstallgraphviz出现以上提示去Homebrew官网:https://brew.sh/index_zh-cn先安装macOS(或Linux)缺失的软件包的管理器,若......
  • Redis基础练习题-错题集(一)
    (1)下面关于Redis中set数据类型与list数据类型的比较,正确的说法是()选项A. set中的数据具有唯一性,list中的数据不具有唯一性B. set中的数据有序,list中的数据无序......
  • 再探 游戏 《 2048 》 —— AI方法—— 缘起、缘灭(7) —— Python版本实现的《2048》游
    《2048》游戏在线试玩地址:https://play2048.co/  如何解决《2048》游戏源于外网的一个讨论帖子,而这个帖子则是讨论如何解决该游戏的最早开始,可谓是“缘起”:Whatis......
  • ansible 的安装及常见模块使用
    ansible 基础keys的ssh协议配置的 特性:幂等性:一个任务执行1遍和执行n遍效果一样。ansible是个管理软件不是服务,不需要长期运行 一、通过epel源安装ansible,1、下载......
  • SQL案例
    1.selecte.employee_nameASMANAGER,ROW_NUMBER()over(PARTITIONbye.dateorderbye.salaryDESC)ASRNFROM((selectDISTINCTb.manager_id,a.employee_namefro......
  • 算法总结
    1.二叉树每层的最大值给定一棵二叉树的根节点 root,请找出该二叉树中每一层的最大值。题解:看见二叉树的题,遍历用深度优先搜索或者广度优先搜索都是有固定模板的,具体看题......
  • Spring 高级 工厂后处理器模拟实现-@Bean
    一、初步扫描到所有被@Bean注解标注的方法的信息packagecom.mangoubiubiu.show.a05;importcom.mangoubiubiu.show.a05.component.ComponentScanPostProcessor;impo......