Tag: 类型推理

如何从KClass反射Kotlin类型推断?

在下面的代码中,我无法正确地安排输入/输出,以至于()和()都按预期工作。 我已经尝试在属性和函数参数中切换进/出,但总是以不正确的输入错误结束。 class KStateMachine(private val states: List<StateHandler>) { var currentState: KClass<out StateHandler> private set private val handlers:HashMap<KClass<in StateHandler>, Int> = HashMap() init { currentState = states[0]::class for (i in 0..states.size – 1) { handlers.put(states[i]::class, i) } } fun goto(toState: KClass<in StateHandler>) { var index = handlers.get(toState) if (index != null) { var oldState = currentState […]

使用WebFlux WebTestClient和Kotlin输入干扰问题

我正在使用Spring Webflux和Kotlin构建一个新应用程序的原型。 Spring Webflux包含一个用于单元测试的WebTestClient。 根据文档,我应该能够测试像这样的REST调用的结果: @Test fun getVersion_SingleResult_ContentTypeJson_StatusCodeOk_ContentEqualsVersion() { //given var version = Version("Test", "1.0") val handler = ApiHandler(version!!) val client = WebTestClient.bindToRouterFunction(ApiRoutes(handler).apiRouter()).build() //expect val response = client.get().uri("/api/version/").exchange() response.expectStatus().isOk response.expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8) response.expectBody(Version::class.java).isEqualTo(version) } 但是,我遇到了一些类型的干扰问题。 问题在于“expectBody”和“isEqualTo”的结合。 我得到的错误是: Kotlin:类型推断失败:没有足够的信息来推断fun inEqualTo(p0:Version!)中的参数T:T! 请明确指定。 使用的方法有以下签名: <B> WebTestClient.BodySpec<B, ?> expectBody(Class<B> var1); public interface BodySpec<B, S extends WebTestClient.BodySpec<B, S>> { <T extends S> […]

Kotlin lambda和类型推断

我在Kotlin中实现了以下枚举 enum class PlaylistAction(val playlistFilter:(Playlist) -> Boolean) { PLAY ({ it.playListOwner.Id == "xxx" }), SAVE({true}) } 我想用它来过滤一个像这样的List: var test = playlists.filter { playlistActionType.playlistFilter} 其中playlistActionType是PlaylistAction类型, PlaylistAction列表是List<Playlist> 但我收到以下错误: 错误:(122,34)类型不匹配:推断的类型是(播放列表) – >(播放列表) – >布尔,但(播放列表) – >布尔是预期的 为什么推断的类型(播放列表) – >(播放列表) – >布尔,而不是(播放列表) – >布尔?