类不扩展java.lang.Object [英] Classes not extending java.lang.Object

查看:127
本文介绍了类不扩展java.lang.Object的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Java中创建用户定义类时,不要将其指定为扩展对象。但是类仍然是一个对象。这个怎么用? javac或JVM如何将类的所有属性注入到用户定义的类中?

While you create a user defined class in Java, you do not specify it as extending Object. But still the class is an Object. How does this work? How does javac or the JVM inject all properties of a class to the user defined class?

推荐答案

extends Object ,编译器插入它。

一些关于是否有实际插入代码的混乱。我不完全确定自己,所以我进行了一个小实验:在文件 test.java 创建以下类:

public class test {}

运行

javap -c test

来拆解字节码。看看什么出来:

to disassemble the bytecode. Look what comes out:

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

}

是,编译器 实际插入将java.lang.Object (或字节码等效项)扩展到类中。

So yes, the compiler does actually insert extends java.lang.Object (or the bytecode equivalent) into the class.

这篇关于类不扩展java.lang.Object的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆