簡體   English   中英

這個Java語法是什么意思? (`類 <? extends ContactAccessor> clazz`)

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

我已經開發了大約1個月的Android應用程序,現在我對Java語法非常熟悉,但今天我偶然發現了這段代碼:

try {
    Class<? extends ContactAccessor> clazz =
                      Class.forName(className).asSubclass(ContactAccessor.class);
    sInstance = clazz.newInstance();
} catch (Exception e) {
    throw new IllegalStateException(e);
}

有人可以解釋一下這個Class<? extends ContactAccessor> clazz Class<? extends ContactAccessor> clazz嗎?

Class用於反射。 <>表示泛型類型。 ? 是一個通用的通配符。 結合這意味着clazz表示類的定義,該類是ContactAccessor的后代。 有關進一步說明,谷歌搜索genericswildcardsreflection

這意味着您使用擴展特殊基類的類。 這在Java中也稱為泛型。

這意味着你需要的Class ,它的類型是未知的(因此? )。 但是你知道它的一個屬性 - 它是ContactAccessor的子類。 你需要找到那個特定的類 - 所以你這樣做: Class.forName(className).asSubclass(ContactAccessor.class); 通過它的類獲取類,它是ContactAccessor的子類。

這是Java Generics的一個例子(更多這里 )。 這意味着clazz變量將是一個擴展ContactAccessor的類型。

這意味着您有一個Class,它是ContactAccessor類或該類或接口的子類。

既然你已經有了ContactAccessor.class ,我會假設你有一個子類。

它定義了一個變量clazz ,它是擴展ContactAccessor類的泛型類的Class對象。

使用通配符(“?”),以便Class只接受ContactAccessor擴展的類,只接受它們中的任何一個。

任何類都是ContactAccessor類的subclass類。

暫無
暫無

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

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