Java:泛型
2021/11/7 1:10:02
本文主要是介绍Java:泛型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
泛型
使用泛型
List<String> strList = new ArrayList<>();
这个List集合只能保存字符串对象,不能保存其他类型的对象。
菱形语法
Java7开始,Java允许在构造器后不需要带完整的泛型类型。只要<>即可。
List<String> strList = new ArrayList<>();
Map<String , Integer scores = new HashMap<>();
深入泛型
泛型允许在定义类、接口、方法时使用类型形参,这个类型形参将在声明变量、创建对象、调用方法时动态地指定。
List接口代码片段
public interface List<E>{ void add(E x); Iterator<E> iterator(); ... }
实例:使用泛型声明的Apple类
public class Apple<T>{ private T info; public Apple(){} public Apple(T info){ this.info = info; } public void setInfo(T info){ this.info = info; } public T getInfo(){ return this.info; } public static void main(String[] args){ Apple<String> a1 = new Apple<>("苹果"); System.out.println(a1.getInfo()); Apple<Double> 2 = new Apple<>(5.67); System.out.println(2.getInfo()); } }
重写父类方法
public class A2 extends Apple{ public String getInfo(){ return super.getInfo().toString(); } }
泛型类的关系
List<String> l1 = new ArrayList<>(); List<String> l2 = new ArrayList<>(); System.out.println(l1.getClass() == l2.getClass());//true
1.不管泛型的实际参数是什么,它们在运行时总有相同的类。
2.不管为泛型的类型形参传入哪一种类型实参,对于Java来说,它们依然被当成同一个类处理,在内存中也只占用一块内存空间,因此在静态方法、静态初始化块或者静态变量的声明和初始化中不允许使用类型形参。如static T info
3.由于系统中并不会真正生成泛型类,所以instanceof
运算符后不能使用泛型类,例如if (cs instanceof List<String>) {...}
注意:
数组和泛型有所不同,假设Foo是Bar的一个子类型(子类或者子接口),那么Foo[]依然是Bar[]的子类型;但G
泛型高级用法
限制泛型类型
class ClassName<T extendes anyClass>
使用类型通配符
List<?>
它的元素可以匹配任何类型。
这种带通配符的List仅表示它是各种泛型List的父类,并不能把元素加入到其中。
这篇关于Java:泛型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求