在登录android(Kotlin)上添加扩展名

Ras*_*iri 3 android kotlin kotlin-extension

我使用此代码为Logandroid类添加扩展名

fun Log.i2(msg:String):Unit{
    Log.i("Test",msg)
}
Run Code Online (Sandbox Code Playgroud)

在活动中使用时

class MainActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.i2("activity_main")
    }
}
Run Code Online (Sandbox Code Playgroud)

找不到Log.i2。怎么了?

Ase*_*rma 5

为了实现静态类扩展功能,则需要同伴对象的写扩展(请参阅

fun Log.Companion.i2(msg:String) {
 ...
}
Run Code Online (Sandbox Code Playgroud)

  • android.util.Log类是静态的,要使Kotlin中的静态类具有扩展功能,我们需要使用其伴随对象引用。如果无法在Log中使用哪一个,那么我建议根据此[answer](/sf/answers/3588138851/)创建`Any`扩展功能 (2认同)