当您在 Java 中创建用户定义的类时,您不会将其指定为扩展对象。但是这个类仍然是一个对象。这是如何运作的? javac 或 JVM 如何将一个类的所有属性注入(inject)到用户定义的类中?
最佳答案
如果您实际上没有编写extends Object
,编译器会为您插入它。
编辑:显然,我对是否确实在插入代码造成了一些困惑。我自己也不是很确定,所以我做了一个小实验:在文件 test.java
中创建以下类:
public class test {}
然后编译,然后运行
javap -c test
反汇编字节码。看看结果是什么:
Compiled from "test.java" public class test extends java.lang.Object{ public test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: return }
所以是的,编译器确实实际上将 extends java.lang.Object
(或等效的字节码)插入到类中。
关于java - 不扩展 java.lang.Object 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345043/