利用反射的技术,往已知泛型的集合中添加非当前泛型的元素

首先来说这个需要就是扯淡,没有实际的应用场景,就是面试的时候的问题。只是一种破坏手段。因为我们使用集合指定泛型,就是为了约束其中的数据的类型。而且我们使用集合的时候一般都会遍历使用。最简单的案例,比如说我们去求集合中的元素的和,那么这不就废了。

泛型的作用就是在编译的阶段限制数据类型,但是等到加载到内存中都是Object类型

    public static void main(String[] args) throws Exception {
//        为什么能够存入呢?因为只有在编译的时候才有数据类型,在底层存的都是Object类型
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        Class<? extends ArrayList> aClass = list.getClass();
        Method add = aClass.getDeclaredMethod("add",Object.class);
        add.invoke(list,"java");
        System.out.println(list);  //  [1, java]

        int sum =0;
        for (Integer integer : list) {
//            这不就废了?
            sum+=list.get(integer);
        }
    }