如何在返回Any时保留智能铸件的对象类型

道歉,如果这是一个愚蠢的问题,科特林对我来说还是新的,我不熟悉语法“类型”,所以发现它很难找到解决方案。

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 

我基本上希望类扩展方法返回自己的实例,所以我仍然可以按照示例的底线操作它

请原谅这个例子的粗俗,简化了下来

你可以使你的扩展功能通用,然后它应该工作。

 fun <T> T?.test(): T? { return this } 

你可以使用一个通用的函数 :

 fun <T> T.test(): T { return this }