Kotlin 调用具有多个边界的泛型函数?
这个Java代码的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
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")