1、泛型
?
五、泛型方法
?
泛型的细节:泛型到底代表什么类型取决于调用者传入的类型,如果没传,默认是Object类型;使用带泛型的类创建对象时,等式两边指定的泛型必须一致;原因:编译器检查对象调用方法时只看变量,然而程序运行期间调用方法时就要考虑对象具体类型了;等式两边可以在任意一边使用泛型,在另一边不使用(考虑向后兼容);ArrayList<String> al = new ArrayList<Object>(); //错//要保证左右两边的泛型具体类型一致就可以了,这样不容易出错。ArrayList<? extends Object> al = new ArrayList<String>();al.add("aa"); //错//因为集合具体对象中既可存储String,也可以存储Object的其他子类,所以添加具体的类型对象不合适,类型检查会出现安全问题。 //?extends Object 代表Object的子类型不确定,怎么能添加具体类型的对象呢?public static void method(ArrayList<? extends Object> al) {al.add("abc"); //错//只能对al集合中的元素调用Object类中的方法,具体子类型的方法都不能用,因为子类型不确定。?