我有一个要使用泛型类型的问题,并且该类型具有带有Collection和varargs的重载方法。当我使用Any
作为类型参数时,我无法传递List作为参数。val productType = ComboBox<Any>("Product type") // public void setItems(Collection<T> items) { // public void setItems(T... items) { productType.setItems(listOf("1","2")) // Not possible
除了通过
productType.setItems(*listOf("1","2").toTypedArray())
将列表转换为数组之外,还有其他更好的解决方案吗?>编辑:试用的工作示例:
class Foo<T>() { fun setItems(items: Collection<T>) {} fun setItems(vararg items: T) {} } val f = Foo<Any>() f.setItems(listOf("1", "2"))
我有一个要使用泛型类型的问题,并且该类型具有带有Collection和varargs的重载方法。当我使用Any作为类型参数时,无法将List作为参数传递。 val ...
如果确实需要调用接受Collection<T>
的重载(例如,它具有某些其他副作用所不希望的副作用,那么有一种解决方案可以告诉编译器执行此操作。
类似于:How to deal with an overload resolution ambiguity of functions with generics?