s1m*_*nw1 7 generics kotlin assertj kotlin-reified-type-parameters kotlin-contracts
我正在尝试编写一个断言函数来检查给定的对象是否属于某个类型T:
@UseExperimental(ExperimentalContracts::class)
inline fun <reified T> assertIsInstance(value: Any?) {
contract {
returns() implies (value is T)
}
Assertions.assertThat(value).isInstanceOf(T::class.java)
}
Run Code Online (Sandbox Code Playgroud)
该函数使用 AssertJ 来做具体的断言,但我愿意让编译器知道在它执行后,valueis 的类型T是可以进行智能广播的。这似乎不起作用,因为:
Error in contract description: references to type parameters are forbidden in contracts
有没有另一种方法来实现这种行为?这里有什么问题?这最终会成为可能吗?
(使用 Kotlin v1.3)
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |