Java如何调用kotlin扩展方法

Car*_*arl 3 java android kotlin-android-extensions

我用kotlin写了一个扩展方法

package com.zhongan.zachat.extention

import android.content.Context
import android.widget.Toast

/**
 * Created by Carl on 2016/12/1.
 *
*
*/


fun Context.toastLong(msg:String) = Toast.makeText(this,msg,Toast.LENGTH_LONG).show()

fun Context.toastshort(msg:String) = Toast.makeText(this,msg,Toast.LENGTH_SHORT).show()
Run Code Online (Sandbox Code Playgroud)

kotlin activity打电话toastLong("test") 的时候还可以.
但在java actvity IDE中说无法找到这种方法.

我怎样才能在java代码中调用kotlin扩展方法

use*_*948 6

基于此页面

扩展实际上并不修改它们扩展的类.

应该注意,不能从对象类调用扩展,因为原始类仍然是相同的.(因此Context不会神奇地拥有额外的功能,因此无法使用Java中的Context.functionName调用它)

您应该可以使用以下方法调用它:

com.zhongan.zachat.extention.<fileName>.toastLong(ctx,"string")
Run Code Online (Sandbox Code Playgroud)

例如,如果文件名为kotlinFile.kt:

com.zhongan.zachat.extention.KotlinFileKt.toastLong(ctx,"string")
Run Code Online (Sandbox Code Playgroud)