网站首页 > java教程 正文
点击上方"java全栈技术"关注,每天学习一个java知识点
原创:阿杜
这篇文章主要总结泛型的一些局限和实际的使用经验
泛型的局限
- 任何基本类型不能作为类型参数
经过类型擦除后,List中包含的实际上还是Object的域,而在Java类型系统中Object和基本类型是两套体系,需要通过“自动装包、拆包机制”来进行交互。
2.任何在运行时需要知道确切类型信息的操作都无法工作。
由于Java的泛型是编译期泛型(在进入运行时后没有泛型的概念),因此运行时的类型转换和类型判定等操作都没有效果。
3.冲突1:方法名一样,参数列表是同一个类型参数的两个泛型方法,重载将产生相同的函数签名;
在泛型擦除后,这两个方法签名完全相同,产生冲突;
4.冲突2:使用泛型接口时,需要避免重复实现同一个接口
IDEA编辑器给出所示——“Payable不能被不同的类型参数继承,即不能重复实现同一个接口”
5.不能在静态域或方法中引用类型参数
这个例子跟问题2基本相同,唯一是在方法的签名里多了一个static关键字,然后引发编译错误的原因就变成了:在静态域中无法引用类型变量
泛型的常用经验
- 尽量消除异常,初学者容易写出使用原生类型的代码,或者使用泛型不当的代码,现在编辑器非常先进,尽量消除提示的异常;对于开发者自己确认不需要消除切可以工作的代码,可以使用@SuppressWarnings("unchecked")屏蔽掉异常;
- 能用泛型类(或接口)的时候尽量使用;能用泛型方法的时候尽量使用泛型方法;
- 定义API时,尽量使用泛型;
4.编写基础工具类时,尽量使用泛型;
- 例子1:通用的返回值对象
- 例子2:缓存操作工具类
猜你喜欢
- 2024-09-16 Java泛型详解,通俗易懂只需5分钟
- 2024-09-16 java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一
- 2024-09-16 java 泛型详解(java 泛型 t ?)
- 2024-09-16 一篇文章告诉你如何使用Java泛型?
- 2024-09-16 Java泛型详解,史上最全图文详解!
- 2024-09-16 Java的“泛型”特性,你以为自己会了?(万字长文)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)