美文网首页
第 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 条:谨慎并用泛型和可变参数

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