Java泛型通配符:上界与下界,简单理解

Java泛型通配符(`?`)用于统一处理不同类型的泛型集合(如`List<Integer>`、`List<Double>`),避免重复定义方法。通配符分两种: **上界通配符(`? extends T`)**:元素是`T`的子类或`T`本身。特点是**只能获取元素**(返回类型为`T`),不可添加元素(编译器无法确定具体子类),适用于读取集合元素(如打印`Number`及其子类集合)。 **下界通配符(`? super T`)**:元素是`T`的父类或`T`本身。特点是**只能添加元素**(`T`或其子类),不可获取具体类型(只能返回`Object`),适用于添加元素(如往`Number`父类集合中添加子类元素)。 核心区别:上界“只读”、下界“只写”,需根据场景选择,避免过度使用通配符或误用`T`。

阅读全文
Java泛型入门:为什么用泛型?简单理解与使用

Java泛型是Java 5引入的参数化类型特性,主要解决无泛型时类型不安全(如集合存储任意类型导致运行时ClassCastException)和强制转换繁琐的问题,实现类型安全与代码复用。 使用场景包括泛型类(如Box<T>)、接口(如Generator<T>)、方法(如<T> T getFirstElement(T[]))及标准集合(如ArrayList<String>、HashMap<String, Integer>)。通配符`<?>`扩展灵活性,上界通配符`<? extends T>`限制元素为T或其子类,下界通配符`<? super T>`限制元素为T或其父类。 核心优势:编译时类型检查保障安全,消除强制转换,通过参数化类型复用代码。注意事项:基本类型需用包装类,泛型不可继承,类型擦除导致无法直接实例化T。掌握泛型参数、通配符及集合应用,可有效提升代码质量。

阅读全文