1. 使用场景:一般是集合用的较多。

2. 使用规则:

  • public static <E> void printArr(E [] inputArray)
  • 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前
  • 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符
  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符
  • 泛型方法方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)

3. 泛型相关面试题:

1.java中的泛型是什么?好处是?

定义:泛型是一种参数化类型的机制。它可以使得代码适用于各种类型,从而编写更加通用的代码,例如集合框架

优点:是一种编译时类型确认机制,提供了编译期的类型安全,确保在泛型类型(通常为泛型集合)上只能使用正确类型的对象,避免了在运行时出现ClassCastException。

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

原理:依赖编译器在编译源码的时候,先进行类型检查,然后进行类型擦除并且在类型参数出现的地方插入强制转换的相关指令实现的。

擦除:编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息

3.什么是泛型中的限定通配符和非限定通配符

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

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

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

4.如何编写一个泛型方法,让它能接受泛型参数并返回泛型类型

要用泛型类型来替代原始类型,比如使用T, E or K,V等被广泛认可的类型占位符

5.你可以把List<String>传递给一个接受List<Object>参数的方法吗?

会导致编译错误,因为List<Object>可以存储任何类型的对象包括String, Integer等等,而List<String>却只能用来存储Strings

6.Array中可以用泛型吗?

Array不支持泛型,建议用List代替Array,因为List可以提供编译期的类型安全保证

7.如何阻止Java中的类型未检查的警告?

这种警告可以使用@SuppressWarnings("unchecked")注解来屏蔽

8.Java中List<Object>和原始类型List之间的区别?

在编译时编译器不会对原始类型进行类型安全检查,却会对带参数的类型进行检查,

你可以把任何带参数的泛型类型传递给接受原始类型List的方法

9.Java中List<?>和List<Object>之间的区别是什么?

List<?> 是一个未知类型的List,而List<Object>其实是任意类型的List

你可以把List<String>, List<Integer>赋值给List<?>,却不能把List<String>赋值给List<Object>

10.List<String>和原始类型List之间的区别

带参数类型是类型安全的,而且其类型安全是由编译器保证的,但原始类型List却不是类型安全的

你不能把String之外的任何其它类型的Object存入String类型的List中,而你可以把任何类型的对象存入原始List中

使用泛型的带参数类型你不需要进行类型转换,但是对于原始类型,你则需要进行显式的类型转换

11.无界通配符

List<?> ?可以是任意类型,也就是未知类型
List<Object>与List<?>并不等同,List<Object>是List<?>的子类

版权声明:欢迎转载, 转载请保留原文链接。https://mp.csdn.net/postedit/79400680

java程序员从笨鸟到菜鸟(八)泛型相关推荐

  1. Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)...

     本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 写在前面:由于前天项目老师建设局的项目快到验收阶段,所以,前天晚上通宵,昨天睡了大半天, ...

  2. Java程序员从笨鸟到菜鸟之(一百零九)一步一步学习webservice(三)开发第一个基于XFire的webservice

    在日常开发中,常用的webservice引擎主要有Axis,axis2,Xfire以及cxf(Xfire的升级版).现在只有axis2和cxf官方有更新.今天我们先以一个比较老的引擎为例.来讲诉一下w ...

  3. Java程序员从笨鸟到菜鸟之(一百零八)一步一步学习webservice(二)webservice基本原理

    本来这第二篇打算讲解"开发第一个基于XFire的webservice"的内容来着.但是想想.开发实例只是局限于了会用的层面上.如果想真正的理解webservice还是需要挖掘其原理 ...

  4. Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)

    写在前面:由于前天项目老师建设局的项目快到验收阶段,所以,前天晚上通宵,昨天睡了大半天,下午我们宿舍聚会,所以时间有点耽误,希望大家见谅 上接: Java程序员从笨鸟到菜鸟之(四)java开发常用类( ...

  5. Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.

    在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本都 ...

  6. Java程序员从笨鸟到菜鸟全部博客目录

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.NET/csh624366188 欢迎关注微信账号:java那些事:csh624366188.每天一篇java相关的文章 大 ...

  7. Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表...

    在上一篇博客中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅仅简单的读取office中的数据.尤其是在生 ...

  8. Java程序员从笨鸟到菜鸟之(序言)+全部链接

    http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主路线,想想这一年半,除去前半年几乎全玩了, ...

  9. Java程序员由笨鸟到菜鸟 电子版书正式发布 欢迎大家下载

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 欢迎关注 ...

  10. java程序员从笨鸟到菜鸟_Java程序员从笨鸟到菜鸟之(十四)Html基础积累总结(上)...

    [新朋友]点击标题下面(↑)蓝色字"Java那些事"关注 [老朋友]点击右上角,转发或分享本页面内容 这是我以前写的<java程序员由笨鸟到菜鸟>系列博客,每天更新一篇 ...

最新文章

  1. 查python的软件_[Python实战]Python制作天气查询软件
  2. Hadoop记录-metastore jmx配置
  3. 机器学习算法加强——贝叶斯网络
  4. python精要(78)-模块与包组织(1)-绝对导入
  5. PHP的postman的bulk edit小功能:可以直接复制浏览器query string parameters的数据至postman的body的form-data 很方便 不用手写了
  6. 如何关闭借呗订阅开通通知_支付宝花呗借呗隐藏规则,芝麻分600以上,花呗3.6万,借呗12万!...
  7. 白盒测试-条件覆盖-短路陷阱
  8. 字体样式 font-family 0911
  9. 【Unity】关于屏幕自适应的思路
  10. HDU1164 Eddy's research I(解法二)
  11. linux 查看gcc安装目录,linux安装GCC详解
  12. Mac系统可用的甘特图软件分享
  13. 第九届蓝桥杯单片机省赛题‘彩灯控制器’程序实现
  14. 【转】泡天涯,混论坛,你不可不知道的
  15. 元宵大师的Python股票量化分析工具QTYX-版本更新说明
  16. 图森面试官| 图森未来首席科学家王乃岩:播下去的种子,早晚会开花
  17. 族蚂智能小程序名片,营销快人一步。
  18. python 时间表_python获取起止日期段中的时间列表
  19. 【Unity】Unity中的异步编程技术详解
  20. 如何更有效地发现用户痛点?

热门文章

  1. Windows禁用和启用触屏功能
  2. JAVA分布式快速开发基础平台 iBase4J 推荐 国产 J2EE框架
  3. java工作流 snaker_GitHub - sneakerhead/hutool: A java tools make it easy to code
  4. Android基本概念介绍
  5. mac perl dbd mysql_perl 链接mysql数据库 mac 系统
  6. 用apline-linux创建的tomcat容器中查看catalina.out日志中文乱码问题解决
  7. Android 输入法键盘和自定义表情面板
  8. Oracle中一个汉字占几个字节
  9. 锁定表格栏位范例网页
  10. Google、苹果、亚马逊向“自动驾驶”发起进攻