美文网首页
Java中的泛型

Java中的泛型

作者: 即墨灯火 | 来源:发表于2018-03-05 10:52 被阅读48次

    泛型方法

    @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<?>

    相关文章

      网友评论

          本文标题:Java中的泛型

          本文链接:https://www.haomeiwen.com/subject/tqgcfftx.html