2016-12-01 8 views
1

Я использую Котлин написать метод удлинительныеJava как вызвать Котлин метод расширения

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() 

, когда я в kotlin activity вызове toastLong("test") нормально.
, но в java actvity IDE сказать не может найти этот метод.

, как я могу назвать Котлин метод расширения в Java коде

+0

Как вы это называете? – user254948

+0

@ user254948 как 'this.toastLong (" test ");' – Carl

ответ

4

на основе this page

Extensions фактически не изменять классы они расширяют.

Следует отметить, что расширение нельзя вызывать из класса объекта, так как исходный класс остается тем же. (Таким образом, контекст не волшебно имеют дополнительную функцию, следовательно, она не может быть вызвана с помощью Context.functionName в Java)

Вы должны быть в состоянии назвать его с помощью:

com.zhongan.zachat.extention.<fileName>.toastLong(ctx,"string") 

например если файл называется kotlinFile.kt:

com.zhongan.zachat.extention.KotlinFileKt.toastLong(ctx,"string") 
+0

Спасибо! хорошо работает – Carl