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使用。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值