Java中的泛型

2018-03-05  本文已影响48人  即墨灯火

泛型方法

@Deprecated
public static <T> List<T> toList(T[] t) {
    return java.util.Arrays.stream(t).collect(Collectors.toList());
}

下面是定义泛型方法的规则:

关键字 super,extends

public static <E> ArrayList<E> newArrayList(Iterable<? extends E> elements) {
    Preconditions.checkNotNull(elements);
    return elements instanceof Collection ? new ArrayList(Collections2.cast(elements)) : newArrayList(elements.iterator());
}

private static <K, V, M extends Map<K, V>> BinaryOperator<M> mapMerger(BinaryOperator<V> var0) {
    return (var1, var2) -> {
        Iterator var3 = var2.entrySet().iterator();

        while(var3.hasNext()) {
            Entry var4 = (Entry)var3.next();
            var1.merge(var4.getKey(), var4.getValue(), var0);
        }

        return var1;
    };
}

public static <T, U, A, R> Collector<T, ?, R> mapping(Function<? super T, ? extends U> var0, Collector<? super U, A, R> var1) {
    BiConsumer var2 = var1.accumulator();
    return new Collectors.CollectorImpl(var1.supplier(), (var2x, var3) -> {
        var2.accept(var2x, var0.apply(var3));
    }, var1.combiner(), var1.finisher(), var1.characteristics());
}

superextends定义了定义了泛型参数的边界

类型通配符

使用?代替具体的类型参数,比如 List<?>

上一篇下一篇

猜你喜欢

热点阅读