[英]in Java syntax, Class<? extends Something>
Class<? extends Something>
這是我的解釋,它是類模板,但是類 ? 意味着類的名稱未確定,它擴展了Something類。
如果我的解釋有問題,請告訴我。
這里有一些令人困惑的答案,所以我會嘗試澄清這一點。 您可以這樣定義泛型:
public class Foo<T> {
private T t;
public void setValue(T t) {
this.t = t;
}
public T getValue() {
return t;
}
}
如果您希望 Foo 上的泛型始終擴展類 Bar 您可以將其聲明為:
public class Foo<T extends Bar> {
private T t;
public void setValue(T t) {
this.t = t;
}
public T getValue() {
return t;
}
}
?
在聲明變量時使用。
Foo<? extends Bar>foo = getFoo();
或者
DoSomething(List<? extends Bar> listOfBarObjects) {
//internals
}
你幾乎是對的。 基本上,Java 沒有模板的概念(C++ 有)。 這稱為泛型。 這定義了一個泛型類Class<>
,泛型的屬性是Something
任何子類。
如果您想了解模板和泛型之間的區別,我建議您閱讀“ C++ 和 Java 中的“泛型”類型之間有什么區別? ”。
你是對的
定義是該類必須是Something的子類型
它與Class<T>
相同,但有一個條件,即T
必須像 Anthony Accioly 建議的那樣extends Something
或implements Something
它也可以是類Something
本身
你是對的。
在 Java 泛型中, ?
運算符的意思是“任何類”。 extends
關鍵字可用於將其限定為“任何擴展/實現Something
(或為Something
)的類。
因此,你有“ Class
的一些類,但這個類必須是或擴展/實現Something
”。
你是對的。
然而,通常你會想要命名擴展Something的類並編寫例如<E extends Something>
。 如果你使用?
你以后不能對給定的類型做任何事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.