我不是一个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>{
}