在 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
}
}
TypeSafeDiagnosingMatcher 是 org.hamcrest.Matcher
的后代你能澄清一下吗?
MyJsonNullableMatcher<String>
是 Matcher<MyJsonNullable<String>>
但不是
Matcher<String>