我有一个调用重载函数funcA
的函数。假设我们有不同的类型A
,B
和C
,它们都实现了抽象类Top<T extends Serializable>
。现在,该给定函数funcA
对于通用类型funcA(p0:Top<T extends Serializable>)
和其他给定类型funcA(p0:A)
,funcA(p0:B)
等都存在。
现在,当我只有通用变量it:Top<out Serializable>
时,我想调用该函数。如果我现在只写funcA(it)
,则Kotlin无法自动推断要调用的重载函数,因为现在已删除了确切的类型。
有效的方法是在调用funcA
之前检查给定的类型并进行强制转换:
when(it) {
is A -> funcA(it)
is B -> funcA(it)
is C -> funcA(it)
else -> error("Cannot infer correctly")
}
有什么办法可以更好地解决这个问题?