java - 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”,所以我不能调用该方法。
有没有人知道我想做什么并且可以帮助我找到解决方案?
谢谢
解决方案
如果这是正确的签名foo2
(它可能不是,取决于Foo
看起来像什么),那么
foo2(TestImpl::class.java)
有类型
Foo<TestImpl, WhateverYouWantHere>
这不是
Foo<Test, WhateverYouWantHere>
除非在其定义中Foo
具有out
第一个参数,但是您将不会有任何“我必须在接口中提供测试实例的方法”。
而获得它的唯一方法就是通过Test::class.java
。
推荐阅读
- cors - 为什么设置 XMLHttpRequest.withCredentials = true 允许 CORS 请求?
- java - 为什么 CompletableFuture 方法不返回 CompletionState
- python - 不同数字范围内我的数据的计算百分比
- node.js - 可以在 alexa ask-sdk 中为 node.js 使用 templateBuilders 吗?
- nunit - 为.net core 2.2项目运行“dotnet test”时如何将“workers”参数传递给nunit runner
- c++ - 为freebsd 11编译gcc4.8.5时出错:错误:未知类型名称'choke'
- python - AttributeError:“NoneType”对象没有“读取”属性
- python - 如何在 python 烧瓶应用程序中将数据从 postgresql 渲染到 csv?
- php - 在查询结果中添加连字符
- c# - EF Core/SQL Server 包含的导航属性仅在直接用于查询时才有效