62,623
社区成员
发帖
与我相关
我的任务
分享public class Animal{
}
public class Cat extends Animal {
}
// class 定义错误,编译估计不通过的。int i,不能出现在范性里
//该为public class FilledListMake <T t>
//接下来你的FilledListMake 类中的main方法我改一下。
public static void main(String[]args)
{
FilledListMake <Animal> stringMaker = new FilledListMake <Animal> ;
// 这里由于方法体范性参数是Animal,所以方法内部把Cat转化为Animal,Cat对象向上转型,无法直接引用Cat自由的方法和属性,称为擦除
List <Animal> list = stringMaker.create(new Cat(),4);
// 这里由于方法的返回值戴上了Cat,也就是List <Cat>,Java内部有一个处理,可以自动转化为返回值的范性类型。这里就是边界,也就是发生动作的地方。所以thinking in java后面有一张专门讲了如何写一个共通函数,虽然作者说没有少写几行代码,实际中也没有什么意义。但是对理解边界非常有帮助。这里的边界和?super Class ? extends Class 有相似之处。
List <Cat> list = stringMaker.create(new Cat(),4);
System.out.println(list);
}