是否可以像下面这样投射对象:
paket add Microsoft.EntityFrameworkCore.Tools --version 3.1.0
在这种情况下,我可以通过某种方式将fun <A> test(obj: X) where A: Class1, A: Interface1 {
}
fun testFunction(obj: Any) {
if (obj is Class1 && obj is Interface1) {
// how to do this now??? smart casting is not working
test(obj) // not working, compiler error
}
}
实例转换为obj
并扩展Class1
的对象实例吗?
答案 0 :(得分:2)
由于您需要提供一种特定类型来匹配temp
,因此您将无法以满足编译器要求的方式来实现它。
但是,您可以做的是将私有函数与类型断言结合使用,以在外部创建类型安全的外观:
*temp
确保y
仅用正确的类型调用,编译器不会强制执行,这是您的责任。但是外部呼叫者将获得一个类型安全的接口,以与此解决方案一起使用。