我对Kotlin中的物化和任何类型之间的区别有些困惑。我有一些关于关键字的含义信息,但不确定在哪些情况下,我们可以选择精炼?和哪些情况下使用任何?有人能帮我具体回答吗?
iibxawm41#
为了访问类的类型信息,我们在Kotlin中使用了一个名为reified的关键字,为了使用reified类型,我们需要使用inline函数。如果一个函数被标记为内联,那么无论在哪里调用该函数,编译器都会将整个函数体粘贴到那里。
inline fun <reified T> genericsExample(value: T) { println(value) println("Type of T: ${T::class.java}")}fun main() { genericsExample<String>("Learning Generics!") genericsExample<Int>(100)}
inline fun <reified T> genericsExample(value: T) {
println(value)
println("Type of T: ${T::class.java}")
}
fun main() {
genericsExample<String>("Learning Generics!")
genericsExample<Int>(100)
Object是Java中类层次结构的根,每个类都有Object作为超类,在Kotlin中Any类型表示所有不可空类型的超类型。
Object方法toString、equals和hasCode继承自Any while to usewait和notify,您需要将变量转换为Object才能使用它们。
public inline fun <T> Iterable<T>.any(predicate: (T) -> Boolean): Boolean { if (this is Collection && isEmpty()) return false for (element in this) if (predicate(element)) return true return false}public inline fun <T> Sequence<T>.any(predicate: (T) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false}
public inline fun <T> Iterable<T>.any(predicate: (T) -> Boolean): Boolean {
if (this is Collection && isEmpty()) return false
for (element in this) if (predicate(element)) return true
return false
public inline fun <T> Sequence<T>.any(predicate: (T) -> Boolean): Boolean {
1条答案
按热度按时间iibxawm41#
为了访问类的类型信息,我们在Kotlin中使用了一个名为reified的关键字,为了使用reified类型,我们需要使用inline函数。
如果一个函数被标记为内联,那么无论在哪里调用该函数,编译器都会将整个函数体粘贴到那里。
Object是Java中类层次结构的根,每个类都有Object作为超类,在Kotlin中Any类型表示所有不可空类型的超类型。
Object方法toString、equals和hasCode继承自Any while to usewait和notify,您需要将变量转换为Object才能使用它们。