2016-04-14 12 views
5

Ho una funzione java:chiamata java varargs metodo dal Kotlin

public static void initialize(@NonNull Activity activity, Settings... settings) {} 

voglio chiamare da Kotlin:

fun initialize(activity: Activity, vararg settings: settings) = JavaClass.initialize(activity, settings) 

Ma non si compila, dicendomi che non v'è tipo non corrispondente , Settings è necessaria, ma l'argomento è kotlin.Array<out Settings>

vedo che si sta cercando di abbinare con signture

public static void initialize(@NonNull Activity activity, Settings settings) {} 

ma voglio utilizzare

public static void initialize(@NonNull Activity activity, Settings[] settings) {} 

risposta

6

Si dovrebbe usare la seguente sintassi:

fun initialize(activity: Activity, vararg settings: settings) = 
    JavaClass.initialize(activity, *settings) 

https://kotlinlang.org/docs/reference/java-interop.html#java-varargs

+3

Inoltre, ecco un riferimento ai documenti circa varargs e l'operatore diffusione : https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs – hotkey

Problemi correlati