Java泛型
Java泛型的本质就是参数化类型。
使用泛型的好处
1.编译器在编译期就会做类型检查,告知是否插入了错误类型的对象,使得程序更加安全,增强了程序的健壮性。
2.消除源代码中的许多强制类型转换,这使得代码更加可读,并且减少了出错机会。
3.泛型变量固定了类型,使用的时候就已经知道是值类型还是引用类型,避免了不必要的装箱、拆箱操作,提高了程序的性能。
4.提高了代码的重用性。
泛型的使用有以下几种
1.泛型方法<T>
1. public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
2.只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
3.<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
4.与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E等形式的参数常用于表示泛型。
2.泛型类
3.泛型接口
4.通配符(上限和下限)
1.<?> --> 无边界的通配符 表示类型参数可以是任何类型
2.<? extends Number> -->固定上边界的通配符 2:表示类型参数必须是Number或者是Number的子类
3.<? super Number> --> 固定下边界的通配符 3: 表示类型参数必须是Number或者是Number的父类
泛型的实现原理
泛型本质是将数据类型参数化,它通过擦除的方式来实现,即编译器会在编译期间「擦除」泛型语法并相应的做出一些类型转换动作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通