继承的关系没搞明白。
问题:你的bb.test(cc)方法,在泛型里传入的是C对象的集合list;那么T b = (T)list.get(0)得到的就是一个C对象。现在return的也是C对象;那么为什么接收的是D d = bb.test(cc)没报错,是因为你的C继承于D,D是A B C的公共父类,典型的父类引用指向子类对象,肯定不会报错(打个比方,狗(C)是动物,那么定义一个动物(D),可以赋值为狗(C),那么,反过来,老鼠(B)也是动物,也继承动物(D),也可以赋值于动物(D),但是虽然同是动物,肯定不能把老鼠(B)等同狗(C)了;所以B d = bb.test(cc)肯定错误了。
希望对你有帮助!