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

标签 java class methods kotlin

Java

Source

对象的方法被标记为原生的,因此很容易理解它们是在幕后实现的

Kotlin

Source

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

Any 的方法没有被标记为 native 或 abstract,所以接下来的问题是:

Any 的方法何时以及如何生成,为什么我不能只复制粘贴 Any 类并编译而不会出错?

最佳答案

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

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

关于java - 为什么 Any 的方法不是抽象的或原生的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52330014/

相关文章:

java - 在驱动程序中调用排序算法

java - 无法让一个类的方法使用 Java 中另一类的用户输入

html - 滚动条着色中的 CSS 问题

c# - 方法参数的属性

java - 根据给定值和父 ID 创建树

java - 将字符串转换为毫秒

java - 使用 JFrame 显示 Google map

java - LinearLayout 中屏幕末尾的 TextView

xcode - 当我在 Swift 中声明它时,为什么需要传递这个结构的变量?

javascript - 在 Javascript 类中从另一个方法调用一个方法