使用Any时模棱两可的方法引用>>

问题描述 投票:1回答:2

我有一个要使用泛型类型的问题,并且该类型具有带有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 ...

generics kotlin
2个回答
0
投票

如果确实需要调用接受Collection<T>的重载(例如,它具有某些其他副作用所不希望的副作用,那么有一种解决方案可以告诉编译器执行此操作。

类似于:How to deal with an overload resolution ambiguity of functions with generics?

© www.soinside.com 2019 - 2024. All rights reserved.