Kotlin的Any 和Java的Object对比
Posted 怪兽N
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin的Any 和Java的Object对比相关的知识,希望对你有一定的参考价值。
Any 和Obejct
Object:
在Java中,Object是Java类层级的根,是所有引用类的超类,即引用类型的根,而基本数据类型像int、float、boolean等则不是类层级的结构的一部分。这意味着当你需要使用Object的时候,你必须使用Java.lang.Integer这样的包装类来表示基本数据类型的值。
Any
Any类型是Kotlin所有非空类型的超类型(非空类的根),包含像Int这样的基本数据类型。
在Kotlin中,把基本类型的值直接赋值给Any类的变量时会自动装箱
val aValue:Any = 42
Any是非空类,所以Any类型的变量不持有null值。如果你需要可以持有任何可能值得变量,包含null在内,则必须使用Any?类型。在底层,Any类型对应java.lang.Object,在Kotlin函数使用Any 时,它会编译成为Java字节码的Object。
注意
Kotlin类可以使用继承自Any的toString、equals和hashCode方法,但是不能使用Object的其他方法(如wait和notify)可以手动把值转换成java.lang.Object使用。
以上是关于Kotlin的Any 和Java的Object对比的主要内容,如果未能解决你的问题,请参考以下文章