如何声明扩展Parameterised类型的类型变量?

时间:2016-03-08 10:24:48

标签: java generics

我不是一个Java程序员,所以请原谅我,如果我的术语有点偏。我想宣布以下内容:

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

我的IDE告诉我它无法解析I,J或K.

我正在尝试用Java做什么,还是应该采取其他方法?

3 个答案:

答案 0 :(得分:3)

您必须声明所有类型参数:

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

答案 1 :(得分: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;

答案 2 :(得分:1)

假设I,J,K不是类,并且它们是类型参数名称,编译器需要引用它们的显式声明。

这样可行

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

}

鉴于Bar需要3个类型参数,

class Bar<I,J,K>{

}