首页 > 代码库 > JDK 源码解读之 Set接口
JDK 源码解读之 Set接口
public interface Set<E> extends Collection<E> { //Set很简单,扩展了Collection
Set<E> 和 Collection<E> 都带了<E>,是泛型接口。什么是泛型类,泛型接口呢?Oracle官方文档上是这么说的:
A generic class is defined with the following format:
class name<T1, T2, ..., Tn> { /* ... */ }
The type parameter section, delimited by angle brackets (<>), follows the class name. It specifies the type parameters (also called type variables) T1, T2, ..., and Tn.
泛型类形式上就是 类名<泛型类型>。
A generic type is a generic class or interface that is parameterized over types.
接下来,让我们再看另一个方法:
Iterator<E> iterator();
iterator方法,返回的是一个Iterator<E>,也是一个泛型接口。
<T> T[] toArray(T[] a);
<T> 是一个generic Type,比如Integer、String,toArray() 的参数和返回值,都是T类型的数组。
接下来,我们再看另外两个方法:
boolean addAll(Collection<? extends E> c); boolean retainAll(Collection<?> c);
<? extends E> 和 <?> 有什么不同呢?
?是一个通配符,代表unknown Type。
<?> 代表 unbounded wildcard 。<? extends E> 代表upper bounded wildcards。
List<Object> 与 List<?> 是相同的吗?
default Spliterator<E> spliterator() {
这个方法,涉及到了java8的Stream API,等以后再说吧,现在超出我的范围了。。。。。
JDK 源码解读之 Set接口