2016-04-14 13 views
5

Ich habe eine Java-Funktion:Aufruf java varargs Methode von Kotlin

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

ich es von Kotlin nennen wollen:

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

Aber es nicht kompilieren, mir zu sagen, dass Typenkonflikt besteht , Settings erforderlich ist, aber das Argument ist kotlin.Array<out Settings>

ich sehe, dass es mit ihm übereinstimmen signture

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

aber ich

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

Antwort

6

Sie sollten verwenden Sie die folgende Syntax verwenden möchten:

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

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

+3

Auch hier ist ein Hinweis auf die Dokumentation über varargs und die Verbreitung Betreiber : https://kotlinlang.org/docs/reference/functions.html#variable-number-of-arguments-varargs – hotkey