请教关于Java.lang.Object的源代码的方法定义?

Lulq21cn 2004-08-18 09:47:40
今天看了Java.lang.Object的源代码,发现对于Object类中的getClass,hashCode,clone,notify,notifyAll等方法都是只进行了声明,并未定义,但是自己随意新建一个类(继承自Object),却可以调用这些方法。请问难道这些方法的实现是在JVM端实现的吗?还有对于int,long,float等基础类型的定义与操作也是在JVM端实现的吗?
哪位兄弟有关于相关资料或有关JVM的,还请不吝赐教(Email:qlu2@ford.com),有分相赠!
...全文
118 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lulq21cn 2004-08-19
  • 打赏
  • 举报
回复
它不是没有定义,都定义了!
public native int hashCode();

native声明了这个方法是在dll中实现的

那没有native这个前缀的方法也是在dll中实现的吗?
Lulq21cn 2004-08-19
  • 打赏
  • 举报
回复
To draco2002(Draco—五月的风!):分数一定有你的一份!
我的邮箱够大,20M.你那边多想想办法,Thanks!
HITZXL 2004-08-19
  • 打赏
  • 举报
回复
好,长知识
draco2002 2004-08-19
  • 打赏
  • 举报
回复
《JAVA 虚拟机规范》太大了(10M),怎么发??
efarer 2004-08-19
  • 打赏
  • 举报
回复
up
ChDw 2004-08-19
  • 打赏
  • 举报
回复
是的,只有说明了native就都需要在dll中实现的

Java跨平台仅表示你的代码可以在不同平台上运行
但并不代表JVM本身可以跨平台,JVM是每个操作系统都有一套的。在Unix下面就使用.so .sl .a这些实现。这个不需要我们去关心


同样,如果你需要实现一些在java里面无法完成的功能,也可以使用native来做,当然这样可能会牺牲一些可移植性
Lulq21cn 2004-08-18
  • 打赏
  • 举报
回复
Java既然是跨平台的,为何在Windows环境下通过DLL来实现这些方法,如果在Linux或UNIX等其他环境,又是通过什么类库来实现的呢?
BTW,实现 public native int hashCode();的方法是否在Java.DLL中定义的?
draco2002 2004-08-18
  • 打赏
  • 举报
回复
是啊,都是些底层的了!
ChDw 2004-08-18
  • 打赏
  • 举报
回复
它不是没有定义,都定义了!
public native int hashCode();

native声明了这个方法是在dll中实现的
Lulq21cn 2004-08-18
  • 打赏
  • 举报
回复
To draco2002(Draco—五月的风!):
You are very kind, thanks in advance!
My Email:qlu2@ford.com
draco2002 2004-08-18
  • 打赏
  • 举报
回复
它提供的一些东西只是教给你怎么用,至于怎么实现的肯定有一些底层的东西(未公开的部分)

int,long,float等都有自己的包装类,你可以看一下它们的代码,里面定义了一些常用的方法、静态变量等!

有一本书叫《JAVA 虚拟机规范》,你可以到下面的网站去找找,没有的话再发给你(太大了)。

www.infoxa.com

www.matrix.org.cn
tiger_wkh52741 2004-08-18
  • 打赏
  • 举报
回复
在JVM中,每次都要对一个类进行装载,这些勿须我们来关注!至于楼主说的那些方法也可以说由JVM来处理了!JVM很奥妙阿,《深入JVM研究》机械工业出版社 还可以,不用深究,看看对于自己今后的理解会有帮助!
至于你说的那些基本类型,在JVM中都是转化为int来处理的!你可以理解是在JVM端实现的!

--就这样 :)
射天狼 2004-08-18
  • 打赏
  • 举报
回复
顶!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧