泛型
泛型
Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常
泛型是提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上,即挡住向集合中插入非法数据。但编译器编译完带有泛形的java程序后,生成的class文件中将不再带有泛形信息,以此使程序运行效率不受到影响,这个过程称之为“擦除”。
泛型类
泛型类就是把泛型定义在类上,用户使用该类的时候,才把类型明确下来
// <T> 表明这是一个泛型类 public class ObjTool<T> { public T obj; public T getObj() { return obj; } public void setObj(T obj) { this.obj = obj; } }
泛型方法
定义泛型方法….泛型是先定义后使用的
class ObjTool{ // <T> 表明这是一个泛型方法 public <T> T getT(T t){ return t; } public <T> void print(T t){ System.out.println(t); } }
// <T> 表明这是一个泛型接口 public interface Inter<T> { public abstract void show(T t); }
类型通配符
泛型中的<Object>
并不是像以前那样有继承关系的,也就是说List<Object>
和List<String>
是毫无关系的,所以需要有通配符代表所有类型
?号通配符表示可以匹配任意类型,任意的Java类都可以匹配…..
当我们使用?号通配符的时候:
设定通配符上限
List<? extends Number>
List集合装载的元素只能是Number的子类或自身
设定通配符下限
<? super Type>
传递进来的只能是Type或Type的父类
无论是设定通配符上限还是下限,都是不能操作与对象有关的方法,只要涉及到了通配符,它的类型都是不确定的!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具