我不是一個Java程序員,所以如果我的術語有點偏離,請原諒我。我想聲明如下:如何聲明一個擴展參數化類型的類型變量?
public class Foo<T extends Bar<I, J, K>> {
....
};
我的IDE告訴我,它無法解析I,J或K.
就是我試圖用Java做的可能還是應該我採取一些其他的方法?
我不是一個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
不是類,它們是type-p參數名稱,編譯器需要引用它們的明確聲明。
這會工作
class Foo<I,J,K,T extends Bar<I, J, K>> {
}
鑑於Bar
預計3類型參數,可以
class Bar<I,J,K>{
}