为何这样强转却不行?

图片说明

为何下面强转允许上面的不允许?

首先,你的泛型T没有意义,你的List<Class<Integer>>已经限定死了,第二ts1方法返回的是Class类对象。泛型不能滥用,否则使用过程不仅会出错,还会造成其他一些不可预知的事情。泛型你可以看做他就是Object类型,他只是为了约束为某一类型而存在的

public class Test<T> {

    public List<Class<T>> ts(T t){
        List<Class<T>> classes = new ArrayList<>();// java8 开始后面可以不用声明
        classes.add((Class<T>) t.getClass());
        return classes;
    }

}