相关疑难解决方法(0)

对于JVM上的原语,Kotlin的具体类型是否不正确?

如果Kotlin函数调用为原语提供了原因,Int那么"传递的"类就是盒装基元的类,而不是未装箱的版本.

inline fun <reified T> reify() = T::class

@Test fun reified_type_doesnt_match_for_primitive() {
    assertNotEquals(Int::class, reify<Int>())
    assertNotEquals(Int::class.java, reify<Int>().java)
    assertNotEquals<Any>(Int::class, reify<Int?>())

    val nullableInt: Int? = 42
    assertNotEquals(nullableInt!!.javaClass.kotlin, reify<Int>())

    assertEquals<Any>(java.lang.Integer::class.java, reify<Int>().java)
}

@Test fun reified_type_matches_for_class() {
    assertEquals(String::class, reify<String>())
}
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?

jvm-languages kotlin

9
推荐指数
1
解决办法
898
查看次数

标签 统计

jvm-languages ×1

kotlin ×1