
1.使用类型通配符比如List?Map?,?List?是ListString、ListObject等各种泛型List的父类。2.读取List?的对象list中的元素时永远是安全的因为不管list的真实类型是什么它包含的都是Object。3.写入list中的元素时不行。因为我们不知道c的元素类型我们不能向其中添加对象。唯一的例外是null它是所有类型的成员。将任意元素加入到其中不是类型安全的Collection? c new ArrayListString();c.add(new Object()); //编译时错误因为我们不知道c的元素类型我们不能向其中添加对象。add方法有类型参数E作为集合的元素类型。我们传给add的任何参数都必须是一个未知类型的子类。因为我们不知道那是什么类型所以我们无法传任何东西进去。唯一的例外的是null它是所有类型的成员。另一方面我们可以调用get()方法并使用其返回值。返回值是一个未知的类型但是我们知道它总是一个Object。