Kotlin 调用具有多个边界的泛型函数?

Kotlin 调用具有多个边界的泛型函数?,kotlin,Kotlin,这个Java代码的kotlin等价物是什么 private A typeA; private B typeB; public Test(){ typeA = createType(); typeB = createType(); } private <T extends A & B> T createType(){ return null; } 私有A型; 私人B类B; 公开考试(){ typeA=createType(); typeB=createTy

这个Java代码的kotlin等价物是什么

private A typeA;
private B typeB;

public Test(){
  typeA = createType();
  typeB = createType();
}

private <T extends A & B> T createType(){
    return null;
}
私有A型;
私人B类B;
公开考试(){
typeA=createType();
typeB=createType();
}
私有T createType(){
返回null;
}
我试着使用kotlin转换器。我无法调用createType()


如何实现这一点?

很难从您的示例中理解其意图,但下面是如何表示双上限:

interface A
interface B

fun <T> createType():T where T : A, T : B {
  return TODO()
}

如果
A
不是
B
的子类型,这怎么可能起作用?也许有一个更现实的使用示例?

这就是Kotlin等效物的外观:

private var typeA: A? = null
private var typeB: B? = null

fun test() {
    typeA = createType<C>()
    typeB = createType<C>()
}

private fun <T> createType(): T? where T : A, T : B {
    return null
}

open class A
interface B
class C: A(), B
private var typeA:A?=无效的
私有变量类型B:B?=无效的
趣味测试(){
typeA=createType()
typeB=createType()
}
private fun createType():T?其中T:A,T:B{
返回空
}
公开甲级
接口B
C类:A(),B

请注意,
where
子句中只能有一个类,其余的类必须是接口,当调用
createType
时,需要提供满足边界的类型参数(在本例中,扩展
A
并实现
B

实际上不是您所要求的,但您的Java示例已经可以简化为:

private <T> T createType(){
  return null;
}
如果您提供更多信息,说明您为什么真正需要
T扩展A&B
,答案可能会更好

private <T> T createType(){
  return null;
}
fun <T> createType() : T = TODO("implement me")