Invoque el método Java de Kotlin con parámetro de list

Quiero llamar a un método Java desde algún código de kotlin

val list: List<String> = emptyList() repository.find(list) // this call goes to a java class 

IntelliJ me está informando sobre un desajuste de tipo:

Escriba desajuste.
Requerido: (Mutuable) Establecer <String!>
Encontrado: Lista <String>

Mi firma de método en Java:

 void find(@Nonnull Set<String> list); 

Entiendo que esto no puede ir bien y de acuerdo con el documento , podría usar una MutableList en Kotlin. Pero también tengo control total sobre el Código Java y me gustaría cambiar el código Java para que funcione con la Lista de Kotlin.

¿Qué apariencia tiene la firma de un método Java para aceptar la Lista de Kotlin?

Por cierto: was is IntelliJ diciéndome con Requinetworking: (Mutuable)Set<String!> ? ¿Para qué sirve el signo de exclamación?

Si realmente desea utilizar una list, debe cambiar la firma de su método Java:

 void find(@Nonnull List<String> list); 

Por otro lado, puede cambiar la statement de su variable en Kotlin:

 val set: Set<String> = emptySet() repository.find(set) 

O por el comentario y la respuesta de Jakob Bowyer, puedes dejar que Kotlin infiera el tipo de argumento:

 val set = emptySet<String>() repository.find(set) 

¿Por qué no val list = emptySet<String>() repository.find(list) // this call goes to a java class

Si tiene una List y desea pasarla a la function (java) tomando un Set , puede convertir la list con la function de extensión de establecer:

 repository.find(list.toSet())