JAVA源码分析之---Object类(一)---registerNatives,getClass方法的使用

来源:互联网 发布:java jbpm工作流实例 编辑:程序博客网 时间:2024/05/17 23:25
本人java码农一名,在工作中,萌生了分析java源码的想法,从今天开始,一步一步开始分析java源码吧。
本人阅读jdk源码版本为jdk1.7。
既然是Java,那么肯定要从最顶层的Object类开始分析。     

Object全称:java.lang.Object。     
Object类是类层次结构的根,也就是java中所有类的祖先类,所有类默认继承Object类,所以Object类中的方法有必要研究一下。
   

今天要剖析的方法是registerNatives(),getClass()。

第一个方法:registerNatives()

private static native void registerNatives();

registerNatives含义是本地注册的意思。分析:该类有static,为静态方法,同时有native修饰。native表示该方法的实现java本身并没有完成,而是有c/c++来完成,形成.dll文件。但是我们注意到,这里的{}里并没有具体的方法体,而且这里是由private修饰,那么应该如何执行呢?其实后面还一个静态代码块。

static {        registerNatives(); }

静态代码块就是一个类在初始化过程中必定会执行的内容,所以在这里执行。

第二个方法:getClass()

public final native Class<?> getClass();

getClass就是获得类的意思,由注释可以知道,这个方法主要是获得该类的完整名称。

package test.java.lang;public class ObjectTest {public static void main(String[] args) {ObjectTest ot = new ObjectTest();Class<? extends ObjectTest> class1 = ot.getClass();System.out.println(class1);}}

在这里我新建了一个ObjectTest类,因为Object是所有类的祖父类,所以该类也拥有getClass方法,我们可以直接查看输出:

class test.java.lang.ObjectTest
可以看出,这里完整的打印了该类的全路径名。



1 0
原创粉丝点击