返回 Any 时如何保留对象类型以进行智能转换
How to keep object type for smart casting when returning Any
抱歉,如果这是一个愚蠢的问题,Kotlin 对我来说仍然是新手,我不熟悉语法"types",所以发现很难找到解决方案。
fun Any?.test(): Any?
{
return this
}
"test string".test() // implicit string is now type of "Any"
"test string".test().substring() // what i'm trying to achieve
我基本上希望 class 扩展方法 return 它自己的实例,这样我仍然可以按照示例的底线对其进行操作
请原谅示例的粗俗,已简化
您可以使用 generic function:
fun <T> T.test(): T {
return this
}
您可以使您的扩展函数通用,然后它应该可以工作。
fun <T> T?.test(): T?
{
return this
}
抱歉,如果这是一个愚蠢的问题,Kotlin 对我来说仍然是新手,我不熟悉语法"types",所以发现很难找到解决方案。
fun Any?.test(): Any?
{
return this
}
"test string".test() // implicit string is now type of "Any"
"test string".test().substring() // what i'm trying to achieve
我基本上希望 class 扩展方法 return 它自己的实例,这样我仍然可以按照示例的底线对其进行操作
请原谅示例的粗俗,已简化
您可以使用 generic function:
fun <T> T.test(): T {
return this
}
您可以使您的扩展函数通用,然后它应该可以工作。
fun <T> T?.test(): T?
{
return this
}