gpt4 book ai didi

kotlin - 类型转换以满足多种类型约束

转载 作者:行者123 更新时间:2023-12-04 21:03:02 25 4
gpt4 key购买 nike

是否可以进行类型转换以满足 kotlin 中的多种类型约束?

假设我有以下情况,但想避免类型转换为类 C (如果多个类实现 AB ,或者我不知道类型 C ):

interface A
interface B

class C: A, B

fun <T> foo(bar: T) where T: A, T: B {

}

是否可以转换为 AB同时地?智能 Actor 似乎不允许这样做。我可以以某种方式手动转换吗?
val c = C()
foo(c) // works

val d: Any = c
if (d is A && d is B) {
foo(d) // smart cast doesn't work here, compiler error
}

// Something like this maybe?
foo(d as A && B)

我知道可以通过创建一个继承自 A 的新接口(interface)来实现。和 B ,然后使用它,但如果我不控制有问题的类,那可能是不可能的。

谢谢

最佳答案

该类型必须显式实现所需的接口(interface),并且因为 Any不能同时是 BA (即使它实现了两者)同时必须有第三种类型,如 C .

这个类似的问题有一个通用的解决方法; Is intersection casting possible in Kotlin?

所以任意类型T实现AB可以这样识别,但 isas不能直接用&&组成如果没有某种显式实现包装器,就不可能满足您的函数类型约束。

关于kotlin - 类型转换以满足多种类型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com