泛型使集合更安全。List<E>:E这里是Type Parameter,可以用来确定列表的内容类型,但是有No一种方法可以检查期间的内容runtime。Generics are checked only during compilation time.<? extends String>:这是Java专门内置的,用于处理Type Parameter的问题。"? extends String"表示此列表可以具有objects which IS-A String.例如:动物类狗类扩展动物老虎类扩展动物因此, "public void go(ArrayList<Animal> a)"将“ NOT accept狗”或“老虎”作为其内容而不是“动物”。"public void go(ArrayList<? extends Animal> a)" 需要做些什么 ArrayList take in Dog and Tiger type.在Head First Java中检查引用。