package generic;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class Instends {
public static void test1(){
//一、泛型中的可以值继承
//1、直接赋值测试
List<Object> l1=new ArrayList<Object>();
l1.add("aa");
l1.add("bb");
for (int i = 0; i < l1.size(); i++) {
System.out.print(l1.get(i)); //result:aabb
}
//2、方法参数测试
test2(l1); //result:aabb
//二、泛型中不可以使用声明继承:如果Foo是Bar的一个子类型(子类或者子接口),而G是某种泛型声明,那么G<Foo>是G<Bar>的子类型并不成立!!
// 1、直接赋值测试
List<String> l2=new ArrayList<String>();
//List<Object> l3=l2;//type mismatch,cannot convert List<String> to List<Ojbect>
/**
* 分析原因如下:
* l3.add(new Object());
* String s = l2.get(0); // 试图把Object赋值给String,这肯定是错误的。
*
*/
//2、方法参数测试:与第三种情况类似,声明继承是无效的。
List<String> l4=new ArrayList<String>();
l4.add("aa");
//test2(l4); compile error
}
public static void test2(List<Object> arg){
for( Object o:arg){
System.out.print(o);
}
}
}