首页 > 解决方案 > 为什么 Any 的方法不是抽象的或原生的?

问题描述

爪哇

资源

Object的方法被标记为native,所以很容易理解它们是在后台实现的

科特林

资源

   public open class Any {
        public open operator fun equals(other: Any?): Boolean
        public open fun hashCode(): Int
        public open fun toString(): String
    }

Any 的方法没有被标记为原生或抽象,所以下一个问题是:

何时以及如何生成 Any 的方法以及为什么我不能只是复制粘贴 Any 类并在没有错误的情况下编译?

标签: javaclassmethodskotlin

解决方案


Any的方法不会生成。编译器映射Anyjava.lang.Object,它提供方法的实现作为 JDK 的一部分。

这些方法没有被标记为抽象,因为Any不是抽象类。方法没有标为是native因为 Kotlin 标准库类到 JDK 类的映射不是类独有的Any,其他类似映射的方法也不是原生的。


推荐阅读