将类型为Any的对象转换为类+接口的实现

时间:2020-01-12 18:10:07

标签: kotlin

是否可以像下面这样投射对象:

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的对象实例吗?

1 个答案:

答案 0 :(得分:2)

由于您需要提供一种特定类型来匹配temp,因此您将无法以满足编译器要求的方式来实现它。

但是,您可以做的是将私有函数与类型断言结合使用,以在外部创建类型安全的外观:

*temp

确保y仅用正确的类型调用,编译器不会强制执行,这是您的责任。但是外部呼叫者将获得一个类型安全的接口,以与此解决方案一起使用。