簡體   English   中英

這個 Java 語法是什么意思? (`類<? extends E>克拉茲`)

[英]What does this Java syntax mean? (` Class<? extends E> clazz`)

我需要一個自定義方法來檢查包含類實例的列表並調用此方法,但我不理解此語法“Class clazz”,我不明白此方法的第二個參數是什么

public static <E> boolean containsInstanceOfOidInrArraylist(List<E> Arraylist, Class<? extends E> clazz) {
        for (E e : Arraylist) {
            if (clazz.isInstance(e)) {
                return true;
            }
        }
        return false;
    }

好的,所以該函數的第一個參數是一個名為ArraylistList<E> (您不應該在 Java arrayList變量大寫,將其命名為arrayList )。

第二個參數是一個Class<? extends E> Class<? extends E>命名為clazz

檢查manubClass<?>的解釋

Class是一個可參數化的類,因此您可以使用語法Class<T>其中T是一種類型。 通過編寫Class<?> ,您聲明了一個可以是任何類型的Class對象( ?是通配符)。 Class類型是一種包含有關類的元信息的類型。

所以現在你知道Class<?>是什么意思了,但是Class<? extends E> Class<? extends E> ?

<? extends E> <? extends E>基本上意味着任何擴展 E(或 E 本身)的類。

所以Class<? extends E> clazz Class<? extends E> clazz意味着你有一個名為varaible clazzE類或子類的E

請參閱本教程: https : //docs.oracle.com/javase/tutorial/java/generics/upperBounded.html

"上界通配符
您可以使用上限通配符來放寬對變量的限制。 例如,假設您想編寫一個適用於List<Integer>List<Double>List<Number> 您可以通過使用上限通配符來實現這一點。

要聲明上限通配符,請使用通配符 ('?'),后跟 extends 關鍵字,然后是其上限。 請注意,在此上下文中,extends 在一般意義上用於表示“擴展”(如在類中)或“實現”(如在接口中)。

第二個參數是一個與列表中對象的類相同的類,或者擴展它。 clazz 用作變量名,因為 class 是保留關鍵字,不能使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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