簡體   English   中英

java 中的 generics 中的混淆

[英]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 關鍵字如何為這個實現機制工作? 我很困惑它使用的是extendsimplements是一樣的嗎?

原因是<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM