java泛型

泛型概念

  • 泛型即类型参数化(generic:通用的,一般的),JDK5引入
  • 引入之前,类型必须是具体的。比如Integer,Number,String
  • 引入之后,可以当做一个参数传进来,即类型参数化。比如 List#add(E e)
  • 优势:
    • 提高通用性。比如: 二分法排序 List#sort(Comparator<? super E> c), 可以用于任意类型
    • 提高可读性,不用强转类型

泛型方法

类型参数声明:用<>包围,支持多个参数,参数间用逗号隔开

public <REQ extends BaseRequest<RESP>, RESP extends BaseResponse> Result<RESP> handle(REQ baseRequest){}
public <F, T> List<T> convert(List<F> list, Function<F, T> mapper>{}

泛型类

类型参数声明和 泛型方法一样。类中声明过的参数,方法就就不用<>声明了

public class HashMap<K,V> extends AbstractMap<K,V>{
	public V put(K key, V value) {}
}

通配符(泛型边界)

泛型: 对元素的约束
泛型边界:“对元素的约束”的集合

//List<Integer>不是List<Number>的子类。

//上界通配符(Upper Bounds Wildcards)
public TreeSet(Collection<? extends E> c)
//下界通配符(Lower Bounds Wildcards)
public TreeSet(Comparator<? super E> comparator)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值