| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Java泛型总结 -> 正文阅读 |
|
[Python知识库]Java泛型总结 |
泛型概念1.泛型就是编写模版代码来适应各种类型 2.泛型的好处就是使用时不必对类型进行强制转换,它通过编译器对类型进行检查 3.注意泛型的继承关系:可以把ArrayList<Integer>向上转型为List<Integer>(T不能变!),但不能把ArrayList<Integer>向上转型为ArrayList<Number>(T不能变成父类)。 泛型的使用1使用泛型时,把泛型参数<T>替换为需要的class类型,例如:ArrayList<String>,ArrayList<Number>等; 2可以省略编译器能自动推断出的类型,例如:List<String> list = new ArrayList<>();; 3不指定泛型参数类型时,编译器会给出警告,且只能将<T>视为Object类型; 4可以在接口中定义泛型类型,实现此接口的类必须实现正确的泛型类型。 注意事项1编写泛型时,需要定义泛型类型<T>; 2静态方法不能引用泛型类型<T>,必须定义其他类型(例如<K>)来实现静态泛型方法; 3泛型可以同时定义多种类型,例如Map<K, V>。 实现原理:Java的泛型是采用擦拭法实现的;擦拭法决定了泛型<T>: 不能是基本类型,例如:int; 不能获取带泛型类型的Class,例如:Pair<String>.class; 不能判断带泛型类型的类型,例如:x instanceof Pair<String>; 不能实例化T类型,例如:new T()。 泛型方法要防止重复定义方法,例如:public boolean equals(T obj); 子类可以获取父类的泛型类型<T>。 extend通配符使用类似<? extends Number>通配符作为方法参数时表示: 方法内部可以调用获取Number引用的方法,例如:Number n = obj.getFirst();; 方法内部无法调用传入Number引用的方法(null除外),例如:obj.setFirst(Number n);。 即一句话总结:使用extends通配符表示可以读,不能写。 使用类似<T extends Number>定义泛型类时表示: 泛型类型限定为Number以及Number的子类。 super通配符使用类似<? super Integer>通配符作为方法参数时表示: 方法内部可以调用传入Integer引用的方法,例如:obj.setFirst(Integer n);; 方法内部无法调用获取Integer引用的方法(Object除外),例如:Integer n = obj.getFirst();。 即使用super通配符表示只能写不能读。 使用extends和super通配符要遵循PECS原则。 无限定通配符<?>很少使用,可以用<T>替换,同时它是所有<T>类型的超类。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 15:48:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |