2 Object Java类体系的根基节点

作者:袖梨 2026-05-27
作为Java类体系的根基,Object类承载着多态、线程同步等核心机制,深入理解其12个方法对掌握Java编程至关重要。 Object —— Java 类体系的根节点 一、Object 在 Java 类型体系中的位置 在Java的单根继承体系中,所有类都直接或间接继承自java.lang.Object。即便开发者未显式声明继承关系,编译器也会自动将其设置为Object的子类。 // 这两种写法完全等价 public class MyClass {} public class MyClass extends Object {} Object 的 12 个方法全景图 Object (12个方法) │ ┌──────────────────┼──────────────────┐ │ │ │ 本地方法(7) 非final方法(3) final方法(2) hashCode() equals() getClass() clone() toString() notify() registerNatives() finalize() notifyAll() getClass() + 3个 wait 重载 方法修饰符说明registerNatives()private static native注册本地方法映射getClass()public final native返回运行时类对象hashCode()public native返回哈希码equals(Object)public判断对象逻辑相等clone()protected native创建并返回拷贝toString()public返回字符串表示notify()public final native唤醒单个等待线程notifyAll()public final native唤醒所有等待线程wait(long)public final native限时等待wait(long, int)public final纳秒级限时等待wait()public final无限等待finalize()protectedGC 前回调 二、registerNatives —— 静态代码块中的秘密 public class Object { private static native void registerNatives(); static { registerNatives(); } } 静态初始化块在Object类首次加载时执行,通过JNI将Java方法与底层C++函数建立映射关系,避免每次调用时的符号查找开销。 // OpenJDK 中的 JNI 方法映射表 static JNINativeMethod methods[] = { {"hashCode", "()I", (void *)&JVM_IHashCode}, {"wait", "(J)V", (void *)&JVM_MonitorWait}, {"notify", "()V", (void *)&JVM_MonitorNotify}, {"notifyAll", "()V", (void *)&JVM_MonitorNotifyAll}, {"clone", "()Ljava/lang/Object;", (void *)&JVM_Clone}, };JNIEXPORT void JNICALL Java_java_lang_Object_registerNatives(JNIEnv *env, jclass cls) { (*env)->RegisterNatives(env, cls, methods, sizeof(methods)/sizeof(methods[0])); } 三、getClass —— 运行时类型信息 public final native Class getClass(); 该方法返回对象运行时的实际类型信息,而非变量声明类型。final修饰确保子类无法篡改类型判断逻辑。

相关文章

精彩推荐