# 第四章第三节--3 编写泛型
标签(空格分隔): 廖雪峰
---
## 如何编写一个泛型类
简单方法
- 按照某种类型(比如`String`)编写类
- 标记所有的特定类型.
- 把特定类型更换成T,生在方法名后面声明<T>.
![原始](http://p0b921qfc.bkt.clouddn.com/18-5-18/34647368.jpg)
![替换](http://p0b921qfc.bkt.clouddn.com/18-5-18/95206326.jpg)
当然熟练之后可以直接编写.
## 注意事项
编写泛型`<T>`不能用于静态方法:
- 编译错误
- 编译器无法在编译器或者静态方法中使用泛型类型`<T>`.
![错误实例](http://p0b921qfc.bkt.clouddn.com/18-5-18/24360737.jpg)
不过有人会发现在`Static`之后添加`<T>`则不会报错,如下所示
![修改方法](http://p0b921qfc.bkt.clouddn.com/18-5-18/87345774.jpg)
主要注意的是这里的`T`和作为泛型参数传递过来的`T`没有关系,应该在实现的代码中改为其他的标识符.
![ 改为K](http://p0b921qfc.bkt.clouddn.com/18-5-18/54262853.jpg)
编译泛型的时候可以在函数名之后传入两种泛型参数
![两个泛型参数](http://p0b921qfc.bkt.clouddn.com/18-5-18/80038152.jpg)
## 小节小结
- 编写泛型时,需要在函数名之后添加泛型参数`<T>`.
- 静态方法不能引用泛型参数`<T>`,必须使用其他的类型`<K>`来实现泛型.
- 泛型可以用来定义两种类型`<T,K>`
- 前言
- 一:Java快速入门
- 二:Java面向对象编程
- 三:Java异常处理
- 错误处理
- Java的异常
- 捕获异常
- 抛出异常
- 自定义异常
- 断言和日志
- 使用断言
- 使用JDK Logging
- 使用Commons Logging
- 使用Log4j
- 四:Java反射与泛型
- 反射
- Class类
- 访问字段
- 调用方法
- 调用构造方法
- 获取继承关系
- 注解
- 使用注解
- 定义注解
- 处理注解
- 泛型
- 什么是泛型
- 使用泛型
- 编写泛型
- 擦拭法
- extends通配符
- super通配符
- 泛型和反射
- 五:Java集合
- Java集合简介
- Java集合简介
- List
- 使用List
- 编写equals方法
- Map
- Set
- Queue
- Stack
- 最佳实践
- 六:Java IO编程
- 七:Java处理日期和时间
- 八:JUnit单元测试
- 九:Java正则表达式
- 十:Java加密与安全
- 十一:Java多线程编程
- 十二:Maven基础
- 十三:Java网络编程
- 十四:Java操作XML和JSON
- 十五:Java JDBC编程
- 十六:Java函数式编程