3 回答
TA贡献2011条经验 获得超2个赞
泛型使集合更安全。
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中检查引用。
TA贡献1818条经验 获得超11个赞
我通常会解释< E >和< ?之间的区别。>通过与逻辑量化(即通用量化和存在量化)进行比较。
对应于“ forall E,...”
对应于“存在某物(用表示),使得...。”
因此,以下通用方法声明意味着,对于所有类类型E,我们定义funct1
public static <E> void funct1 (List<E>; list1) {
}
以下通用方法声明意味着,对于某些现有类,用< ?>,我们定义funct2。
public static void funct2(List<?> list) {
}
添加回答
举报