2016-03-08 82 views
2

我不是一個Java程序員,所以如果我的術語有點偏離,請原諒我。我想聲明如下:如何聲明一個擴展參數化類型的類型變量?

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

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

就是我試圖用Java做的可能還是應該我採取一些其他的方法?

回答

3

你必須申報所有類型參數:

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

你不能聲明他們含蓄地這樣,你需要寫

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

注意,如果這似乎是多餘的,你可能會發現所有你需要的是

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

假設I,J,K不是類,它們是type-p參數名稱,編譯器需要引用它們的明確聲明。

這會工作

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

} 

鑑於Bar預計3類型參數,可以

class Bar<I,J,K>{ 

}