Java中的泛型

泛型方法

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

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

  • 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(例子中的<T>
  • 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。

关键字 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<?>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 引言:泛型一直是困扰自己的一个难题,但是泛型有时一个面试时老生常谈的问题;今天作者就通过查阅相关资料简单谈谈自己对...
    cp_insist阅读 5,841评论 0 4
  • 本文包括:JDK5之前集合对象使用问题泛型的出现泛型应用泛型典型应用自定义泛型——泛型方法自定义泛型——泛型类泛型...
    廖少少阅读 5,937评论 5 16
  • 文章作者:Tyan博客:noahsnail.com 1. 什么是泛型 Java泛型(Generics)是JDK 5...
    SnailTyan阅读 4,164评论 0 3
  • 一 泛型是什么泛型最精准的定义:参数化类型。具体点说就是处理的数据类型不是固定的,而是可以作为参数传入。定义泛型类...
    Diffey阅读 7,582评论 0 9
  • 一个满头白发,身材笔直,样子也很老实,但不会待人接物,这是给我的第一印象. 第一次去他家吃饭,他总是看着我吃东西,...
    桃花心木barry阅读 1,216评论 0 0

友情链接更多精彩内容