说我有一个utils函数:
public static <T extends Number> double myFunc(List<T> a1, List<T> a2) {...}
接下来,我有一堂课:
class Config<T extends Number>{
public List<T> buckets;
public List<T> groups;
}
最后, 我想写一个函数,像这样:
double execute(Config<? extends Number> config){
//Some stuff
myFunc(config.buckets, config.groups)
}
但是,这给了我一个编译时错误:“方法myFunc(List
我对为什么编译器不喜欢这样的原因有一个猜测。基本上,myFunc
要求两个参数列表都具有相同的类型参数T extends Number
,但是我提供了{{1 }},因此无法确保两者都是相同的类型参数吗? (我遇到了此错误,所以我猜这也是造成该问题的原因。)但是我使用的是相同的? extends Number
对象的Config<? extends Number> config
和buckets
字段,如果您请参阅类定义,具有与类级别type参数中定义的类型groups
相同的类型。那不是保证它们具有相同的类型参数吗?
问题还在其他地方吗?
预先感谢您一直努力到最后。