Kotlin 中自定义泛型类型的类型不匹配

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

在 Kotlin 中我可以写:

fun foo(): List<String> {
    return ArrayList<String>().apply { "1234" }
}

并且它可以正常工作,没有任何问题。

但我尝试对自己的通用类做同样的事情:

 fun bar(): Matcher<String> {
     return MyJsonNullableMatcher()
 }

我看到错误:

Type mismatch.
Required:
Matcher<String>
Found:
MyJsonNullableMatcher<String>

对我来说,错误看起来非常不清楚

更多详情:

import org.hamcrest.Matcher
import org.hamcrest.TypeSafeDiagnosingMatcher

class MyJsonNullableMatcher<T> : TypeSafeDiagnosingMatcher<JsonNullable<T>>() {

    override fun describeTo(desc: Description) {
        // doesn't matter
    }

    override fun matchesSafely(actual: JsonNullable<T>, mismatchDescription: Description): Boolean {
         // doesn't matter
        return true
    }
}

TypeSafeDiagnosingMatcherorg.hamcrest.Matcher

的后代

你能澄清一下吗?

kotlin generics inheritance hamcrest
1个回答
0
投票

MyJsonNullableMatcher<String>
Matcher<MyJsonNullable<String>>

但不是

Matcher<String>

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