美文网首页
第 32 条:谨慎并用泛型和可变参数

第 32 条:谨慎并用泛型和可变参数

作者: 综合楼 | 来源:发表于2021-05-13 21:48 被阅读0次
谨慎并用泛型和可变参数.jpeg
static void dangerous(List<String>... stringLists) {
    List<Integer> intList = List.of(42);
    Object[] objects = stringLists;
    objects[0] = intList; // Heap pollution
    String s = stringLists[0].get(0); // ClassCastException
}
static <T> T[] toArray(T... args) {
    return args;
}
static <T> T[] pickTwo(T a, T b, T c) {
    switch(ThreadLocalRandom.current().nextInt(3)) {
        case 0: return toArray(a, b);
        case 1: return toArray(a, c);
        case 2: return toArray(b, c);
    }
    throw new AssertionError(); // Can't get here
}
@SafeVarargs
static <T> List<T> flatten(List<? extends T>... lists) {
    List<T> result = new ArrayList<>();
    for (List<? extends T> list : lists)
        result.addAll(list);
    return result;
}

相关文章

  • 第 32 条:谨慎并用泛型和可变参数

  • Swift Founction 和 Closures

    可变参数数量和参数泛型约束 可以使用 ..., 来设置可变参数数量 使用 where 约束泛型实现特定的协议 方法...

  • 第三十二条:谨慎并用泛型和可变参数

    可变参数(vararg)方法(详见第53条)和泛型都是在Java5中就有了,因此你可能会期待它们可以良好的相互作用...

  • JDK5的新特性

    可变参数 格式: 注意 静态导入 泛型 泛型类: 泛型方法: 泛型接口: 增强for 在 集合_List 中有...

  • Java 泛型

    泛型类 例如 泛型接口 例如 泛型通配符 泛型方法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型上下边...

  • JavaSE基础知识学习-----泛型

    泛型 Java泛型是jdk1.5的一个新特性,jdk的性特性还包括:泛型,枚举,装箱和拆箱,可变参数等。这里先主要...

  • java——中泛型的应用

    在解释泛型的时候先说下java中的可变参数的定义和应用。定义:参数的类型... 参数名称示例: package c...

  • java集合工具 填充 提取器(减少get set调用)

    集合工具提取和填充器 1.工具说明 技术 : 反射+泛型+集合+可变参数+Threadlocal优点 :支持所有数...

  • 2019-05-03 Java-泛型

    泛型 定义:即参数化类型,也就是说数据类型变成了一个可变的参数,在不使用泛型的情况下,参数的数据类型都是写死了的,...

  • Java泛型学习

    泛型是不可变的(invariant)。 不可变,即如果A是B的子类,则A的泛型(例如List )并非B的泛型(例如...

网友评论

      本文标题:第 32 条:谨慎并用泛型和可变参数

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