Generics 如何使类型推断适用于遵循嵌套泛型接口的实例?

Generics 如何使类型推断适用于遵循嵌套泛型接口的实例?,generics,kotlin,interface,casting,type-inference,Generics,Kotlin,Interface,Casting,Type Inference,这个最小的例子 接口Foo{ 有趣的食物(值:T) } 接口条 Afo类:Foo{ 重写fun foobinate(值:T){} } ABar类:酒吧 有趣的东西(foo:foo,x:Bar){ foo.foobinate(x) } 主要内容(){ val foo=AFoo() doSomething(foo,ABar()) } 给出doSomething行的错误: Type mismatch: inferred type is AFoo<ABar<Int>> but

这个最小的例子

接口Foo{
有趣的食物(值:T)
}
接口条
Afo类:Foo{
重写fun foobinate(值:T){}
}
ABar类:酒吧
有趣的东西(foo:foo,x:Bar){
foo.foobinate(x)
}
主要内容(){
val foo=AFoo()
doSomething(foo,ABar())
}
给出
doSomething
行的错误:

Type mismatch: inferred type is AFoo<ABar<Int>> but Foo<Bar<Int>> was expected
类型不匹配:推断的类型为AFoo,但应为Foo

有没有办法让它工作,或者有什么概念性的东西阻碍了它的工作?

声明
doSomething
这样应该可以工作

fun <A : Bar<*>> doSomething(foo: Foo<A>, x: A) {
    foo.foobinate(x)
}

使用
out
variance.@AnimeshSahu在哪里<代码>接口Foo不工作。它导致
类型参数T被声明为'out',但出现在
fun foobinate(值:T)
行中类型T的'in'位置。(也许我编辑我的问题太晚了。我添加了一个成员函数。)
有趣的doSomething(foo:foo,x:T){foo.foobinate(x)}
@IR42谢谢,它很有效。如果你把这个作为回答,我会接受的。
fun <T, A : Bar<T>> doSomething(foo: Foo<Bar<T>>, x: Bar<T>) {
    foo.foobinate(x)
}