Если вам действительно нужно вызвать перегрузку, которая принимает Collection<T>
(например, у него есть некоторые побочные эффекты, которых нет у другого), то есть решение, которое говорит компилятору сделать это.
Это похоже на: Как справиться с неоднозначностью разрешения перегрузки функций с обобщениями?
В принципе, вы можете сделать непроверенное приведение , которое будет ограничивать аргумент типа ComboBox
, чтобы List<String>
больше не совпадал с подписью с vararg типа аргумента, и есть только подпись, принимающая Collection
, который соответствует.
Для этого вам нужно чтобы выбрать аргумент нового типа, скажем R
, который удовлетворяет обоим условиям:
List<R>
не является подтипом R
List<R>
все еще является подтипом Collection<R>
Можно отметить, что тип, который мы можем использовать как R
, равен String
, давая это:
@Suppress("UNCHECKED_CAST")
(productType as ComboBox<String>).setItems(listOf("1","2"))
Однако, если поведение две перегрузки идентичны, проще передать массив в вару перегрузка rg с использованием *list.toTypedArray()
, как вы и сказали.