首页 > 解决方案 > Kotlin 方法中的泛型

问题描述

嘿,我想做一个这样的功能:

fun foo(name: String): Foo<out Test,  String> {
        return foo2(TestImpl::class.java)
}

fun <T, K> foo2(clazz: Class<T>): Foo<T, K>

但是如果没有“out Test”我怎么能做到这一点,因为当我在方法中使用它时,我必须在接口中提供一个测试实例,我的 IDE 说参数是“Nothing”,所以我不能调用该方法。

有没有人知道我想做什么并且可以帮助我找到解决方案?

谢谢

标签: javakotlingenerics

解决方案


如果这是正确的签名foo2(它可能不是,取决于Foo看起来像什么),那么

foo2(TestImpl::class.java)

有类型

Foo<TestImpl, WhateverYouWantHere>

这不是

Foo<Test, WhateverYouWantHere>

除非在其定义中Foo具有out第一个参数,但是您将不会有任何“我必须在接口中提供测试实例的方法”。

而获得它的唯一方法就是通过Test::class.java


推荐阅读