返回 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
}