Java 如何声明扩展参数化类型的类型变量?

Java 如何声明扩展参数化类型的类型变量?,java,generics,Java,Generics,我不是一个Java程序员,所以如果我的术语有点不合适,请原谅。我想声明如下: public class Foo<T extends Bar<I, J, K>> { .... }; 公共类Foo{ .... }; 我的IDE告诉我它无法解析I、J或K 我尝试用Java做的是什么,还是应该采取其他方法?您必须声明所有类型参数: public class Foo<I,J,K,T extends Bar<I, J, K>> { ....

我不是一个Java程序员,所以如果我的术语有点不合适,请原谅。我想声明如下:

public class Foo<T extends Bar<I, J, K>> {
    ....
};
公共类Foo{
....
};
我的IDE告诉我它无法解析I、J或K


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

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

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

您不能以这种方式隐式声明它们,您需要编写

public class Foo<I, J, K, T extends Bar<I, J, K>> 
公共类Foo
注意:如果这看起来是多余的,您可能会发现您所需要的只是

public class Foo<I, J, K> {
     final Bar<I, J, K> bar;
公共类Foo{
最终钢筋;

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

这会管用的

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

}
class Bar<I,J,K>{

}