顶级功能和扩展中的哪项?在项目中的每个地方都具有更好的功能?
顶级功能 n
package com.test
fun A(){
}
任何扩展名
package com.test
fun Any.A(){
}
答案 0 :(得分:5)
Any.A()
扩展功能将在所有对象实例上可用,而A()
功能是“静态”可用的。因此,如果您不需要在this
中使用A()
,则不应将其用作扩展函数。
在 Java 中,签名的差异为ToolsKt.A(Any)
与ToolsKt.A()
。