你明明定义了 Class MType<T> 这个是任意泛型
MType<Number> ty= new MType();
List<Number> l = ty.getList();//这样编译会报错
这样写等于是引用你创建类对象的泛型啊。而List 又没指定这样的泛型。
Type mismatch: cannot convert from List<String> to List<Number>
List类这时候是没指定泛型类型的。所以不能转化为List<Number>
MType ty2= new MType();
List<Number> l = ty2.getList();//这样编译不会错‘
Type safety: The expression of type List needs unchecked conversion to conform to List<Number>
这样写就是没有引用MType的泛型,而List<Number>是未知泛型。所以系统报警告。 |