Call java varargs method from kotlin

I have a java function:

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

I want to call it from kotlin:

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

But it does not compile, telling me that there is a type mismatch, Settings is required, but the argument is kotlin.Array<out Settings>

I see that he is trying to match it with signture

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

but i want to use

 public static void initialize(@NonNull Activity activity, Settings[] settings) {} 
+5
source share
1 answer

You should use the following syntax:

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

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

+6
source

Source: https://habr.com/ru/post/1247139/


All Articles