泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本 质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法, 能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,我们就可以使用 Java 泛型。

1. 泛型方法()

你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数 类型,编译器适当地处理每一个方法调用。

// 泛型方法 printArray

public static < E > void printArray( E[] inputArray ) {

for ( E element : inputArray ){

System.out.printf( "%s ", element );

}

}

1). extends T>表示该通配符所代表的类型是 T 类型的子类。

2). super T>表示该通配符所代表的类型是 T 类型的父类。

2. 泛型类

泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。和泛型方法一 样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数, 也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数, 这些类被称为参数化的类或参数化的类型。

public class Box {

private T t;

public void add(T t) { this.t = t;

}

public T get() { return t;

}

3. 类型通配符?

类型通配符一般是使用? 代 替 具 体 的 类 型 参 数 。 例 如 List> 在逻辑上是 List,List 等所有 List的父类。

4. 类型擦除

Java 中的泛型基本上都是在编译器这个层次来实现的。在生成的 Java 字节代码中是不包含泛 型中的类型信息的。使用泛型的时候加上的类型参数,会被编译器在编译的时候去掉。这个 过程就称为类型擦除。如在代码中定义的 List和 List等类型,在编译之后 都会变成 List。JVM 看到的只是 List,而由泛型附加的类型信息对 JVM 来说是不可见的。 类型擦除的基本过程也比较简单,首先是找到用来替换类型参数的具体类。这个具体类一般 是 Object。如果指定了类型参数的上界的话,则使用这个上界。把代码中的类型参数都替换 成具体的类。

java泛型_Java核心知识 基础五 JAVA 泛型相关推荐

  1. java 复制对象_Java核心知识 基础七 JAVA 复制

    将一个对象的引用复制给另外一个对象,一共有三种方式.第一种方式是直接赋值,第二种方式 是浅拷贝,第三种是深拷贝.所以大家知道了哈,这三种概念实际上都是为了拷贝对象. 1. 直接赋值复制 直接赋值.在 ...

  2. Java尚硅谷核心知识

    Java尚硅谷核心知识 一.Java基础部分 1.1 Java语言的主要特性 1.2 Java程序运行机制及运行过程 1.2.1Java两种核心机制 1.3Java语言的环境搭建 1.3.1 为什么要 ...

  3. 机械转行java自学经历,零基础学java,血泪总结的干货

    机械转行java自学经历,零基础学java,血泪总结的干货 1.我为什么转行 2.转行之路 3.面试之路 自学路上的网站 Java教程 实践项目一站式学习 bilibili 自学书籍 <Java ...

  4. Java好学吗?零基础入门Java,三个就业方向实现月入过万!

    Java好学吗?零基础入门Java容易吗?据统计,这是很多人学习前最常问也是最关心的问题之一. 不可否认,大家在开始接受新事物的时候都会陷入困境,但学习是循序渐进的,零基础入门Java到底难不难,只有 ...

  5. java并发核心知识体系精讲_JAVA核心知识汇总

    双非同学如何逆袭大厂? 在互联网行业,入行的第一份工作很大程度上决定了以后职业发展的高度.有些双非的同学认为自己校招进不了大厂以后还会有社招,这种想法很危险.大厂的社招,大多数都只招大厂的员工.什么意 ...

  6. java细节_java细节知识

    代码优化细节 (1)尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是fin ...

  7. 学java 的要点_零基础学Java,掌握Java的基础要点

    对于程序员群体来说,了解一定的技巧会对学习专业技能更有帮助,也更有助于在自己的职业发展中处于有利地位,无限互联Java培训专家今天就为大家总结Java程序员入门时需要掌握的基础要点: 掌握静态方法和属 ...

  8. 零基础自学java的难处_零基础自学Java 在学习中要注意哪些问题

    如果是零基础自学Java编程,在学习过程中有很多要注意的问题,想要学好学精必然是件难事,并且可能会走弯路浪费很多时间,短时间内是不可能学成参加工作的,想要成为专业的Java程序员并不容易,技术过硬尤为 ...

  9. 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中

    我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要 ...

最新文章

  1. Ubuntu 搭建 Zerotier One MOON 根目录服务器
  2. JAVA通信系列三:Netty入门总结(转)
  3. linux登陆连接信息,成功登录后Linux关闭连接
  4. java 二进制,八进制,十进制,十六进制间相互转换的方法
  5. 开发常见错误解决(3)VS2005调试程序出错,绑定句柄无效 Terminal Services
  6. c语言中realloc()函数解析
  7. 三大纪律七项注意(Access数据库)
  8. Java并发编程实战~ReadWriteLock~
  9. Java讲课笔记19:throw关键字、自定义异常与垃圾回收
  10. Android人脸识别开发入门--基于虹软免费SDK实现
  11. (90)FPGA比较器设计
  12. VMware虚拟机运行虚拟系统时显示“内部错误”的解决方法
  13. 扫描枪取消回车二维码_如何使条码扫描枪录入完不自动回车呢-百度经验
  14. 芝麻小客服电脑版新增网址自带openid功能,聊天界面改版,新增通用设置
  15. 微信小程序并发服务器架构,「系统架构」如何设计一个健壮高效的微信小程序登录方案...
  16. postgresql统一把字段小写转大写
  17. 苹果圆圈怎么设置_苹果手机白色圆圈怎么弄
  18. 【科创人独家】EasyStack王瑞琳:All In超级领先,知易行难
  19. SQL Server 2008 R2导出数据脚本和导入数据库脚本的方法(原创+转载)
  20. Android--经典蓝牙(文件传输--socket通信)

热门文章

  1. 关于通过dll导出类模板和函数模板
  2. 社区网站类场景下的静态资源处理
  3. 结构化数据存储,如何设计才能满足需求?
  4. 你知道 Java 类是如何被加载的吗?
  5. MongoDB 4.2 新特性解读
  6. 阿里巴巴、支付宝员工都在用的知识管理工具,究竟有何特别?
  7. 寻找 K8s 1.14 Release 里的“蚌中之珠”
  8. Kubernetes的共享GPU集群调度 1
  9. 超值一篇分享,Docker:从入门到实战过程全记录
  10. 将 k8s 制作成 3D 射击游戏,好玩到停不下来 | 文末福利