Java

Java高级特性-集合

2019-02-24  本文已影响0人  Harper324
1、集合
2、泛型
//用E来代替实际类型,在编译时确定
public class ArrayList<E> {
//code
}
通配符(?)

通常有类:

  1. ? extends T(上边界通配符upper bounded wildcard) 对应协变关系,表示 ? 是继承自 T的任意子类型.也表示一种约束关系,只能提供数据,不能接收数据。 ? 的默认实现是 ? extends Object, 表示 ? 是继承自Object的任意类型。
  2. ? super T(下边界通配符lower bounded wildcard) 对应逆变关系,表示 ? 是 T的任意父类型。也表示一种约束关系,只能接收数据,不能提供数据(或者用object来接受)
  3. 通配符也包括自己。

举个例子: 假设有类A, B, C, D; 类D继承自C, 类C继承自类B, 类B继承自类A。

ArrayList<? extends A> upperBoundedList = new ArrayList<B>();
upperBoundedList = new ArrayList<C>();
upperBoundedList.add(new C());// error, can not add data.
ArrayList<? super B> upperBoundedList = new ArrayList<A>();
upperBoundedList.add(new C());
upperBoundedList.add(new D());
upperBoundedList.add(new B());
上一篇下一篇

猜你喜欢

热点阅读