[英]Confusion in generics in java
我在 java 中學習 generics。起初我們做了一個 arraylist 的 ZA0FAEF08541B4294C046F 和我們在列表中添加了 A9BB1B4294C046F 。
import java.util.ArrayList;
import java.util.List;
public class GenericsRunner {
public static void main(String[] args) {
ArrayList<Integer> numbers=new ArrayList<>();
numbers.add(1);
}
static <X extends List> void duplicate(X list) {
list.addAll(list);
}
}
Method duplicate 只能被那些擴展List
的對象使用。 但是,由於List
是接口
public interface List<E> extends Collection<E>
ArrayList
正在實施List
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable,
java.io.Serializable
我被困在這一點上。 Extends 由那些從超級 class 繼承屬性的類使用。 但是Arraylist
如何擴展List
? 實際上ArrayList
正在實施List
。 這個 extends 關鍵字如何為這個實現機制工作? 我很困惑它使用的是extends
和implements
是一樣的嗎?
原因是<X extends T>
意味着X
是從T
繼承的。 接口沒有特殊語法,例如在 class 聲明中描述 inheritance 時。
ArrayList
實現了接口List
,這意味着它繼承自List
,因此適用於泛型類型<X extends List>
。
在 Java 中,任何 class 只能擴展一個class。 默認情況下,當您不指定另一個父 class 時,它是Object
。 class 和接口可以實現任意數量的接口。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.