簡體   English   中英

如何聲明擴展參數化類型的類型變量?

[英]How do I declare a type variable that extends a Parameterised type?

我不是Java程序員,所以如果我的術語有點偏離,請原諒。 我想聲明以下內容:

public class Foo<T extends Bar<I, J, K>> {
    ....
};

我的IDE告訴我它無法解析I,J或K。

我正在嘗試用Java做的事情還是應該采用其他方法?

您必須聲明所有類型參數:

public class Foo<I,J,K,T extends Bar<I, J, K>> {
    ....
}

您不能以這種方式隱式聲明它們,您需要編寫

public class Foo<I, J, K, T extends Bar<I, J, K>> 

請注意,如果這似乎多余,您可能會發現所需的只是

public class Foo<I, J, K> {
     final Bar<I, J, K> bar;

假設I,J,K不是類,並且它們是類型參數名稱,則編譯器需要引用它們的顯式聲明。

這會工作

class Foo<I,J,K,T extends Bar<I, J, K>> {

}

鑒於Bar需要3種類型參數,

class Bar<I,J,K>{

} 

暫無
暫無

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

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