泛型在继承方面的体现,求解答

    public static void Show(List<Object> c) {
        for (Object e : c) {
            System.out.println(e);
        }
    }
    public static void main(String[] args) {
        List<Object> list = null;
        List<String> list1 = null;
        list = list1;//编译不通过,因为list1不是list的子类
        Show(list);//编译通过
        Show(list1);//编译不通过
    }

但是将Show()方法的static关键字去掉后采用对象来调用Show(),结果就都能通过

    public void Show(List<Object> c) {
        for (Object e : c) {
            System.out.println(e);
        }
    }
    public static void main(String[] args) {

        Exercise e = new Exercise();
        List<Object> list = null;
        List<String> list1 = null;
        e.Show(list);//编译通过,能够正常打印
        e.Show(list1);//编译也能通过,也能正常打印
    }

为什么通过对象调用Show()就感觉泛型能转换:

因为静态函数不会继承

这个跟是否静态没有关系

    public void Show(List<Object> c) {
        for (Object e : c) {
            System.out.println(e);
        }
    }
    public static void main(String[] args) {
 
        Exercise e = new Exercise();
        List<Object> list = null;
        List<String> list1 = null;
        e.Show(list);//编译通过,能够正常打印
        e.Show(list1);//编译仍然是会报错的
    }

show方法应该改成

    public void Show(List<?> c) {
        for (Object e : c) {
            System.out.println(e);
        }
    }

    public void Show(List<? extends Object> c) {
        for (Object e : c) {
            System.out.println(e);
        }
    }

List 只能存放Object类型,List<?>可以存放任意一种类型数据,List<? extends Object>表示可以存放Object及所有子类