为什么Any的方法不是抽象的或原生的?

Rom*_*nko 4 java methods class kotlin

Java的

资源

Object的方法被标记为native,因此很容易理解它们是在场景后面实现的

科特林

资源

   public open class Any {
        public open operator fun equals(other: Any?): Boolean
        public open fun hashCode(): Int
        public open fun toString(): String
    }
Run Code Online (Sandbox Code Playgroud)

任何方法都没有标记为原生或抽象,所以问题是下一个:

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

yol*_*ole 10

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

这些方法没有标记为抽象,因为Any它不是抽象类.这些方法没有标记为native因为Kotlin标准库类到JDK类的映射不是Any该类唯一的,并且以类似方式映射的其他方法不是本机的.