我有简单的代码如下
package prashant;
public class CheckObject {
}
我使用了javap -c CheckObject并得到了以下字节码:
Compiled from "CheckObject.java"
public class prashant.CheckObject {
public prashant.CheckObject();
Code:
0: aload_0
1: invokespecial #8 // Method java/lang/Object."<init>":()V
4: return
}
在旧版本的 Java 中,隐式编译器在字节代码中添加 extends Object ,如下所示:
public class prashant.CheckObject extends java.lang.Object
所以我有两个关于扩展对象的问题:
1) 是否由于性能受到影响而未添加?
2)在哪个java版本中它被改变了?
用于编译此代码的java版本是1.6.0_45。
最佳答案
您正在打印反汇编代码,而不是原始字节码,并且反汇编代码被设计为人类可读的。没有声明父类(super class)的对象必然扩展Object
(如构造函数上的注释所示),因此列出它是多余的。
关于java - 未在字节码中扩展 java.lang.Object。那么为什么编译器不将它添加到新版本的java中呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28341641/