最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
2 Object Java类体系的根基节点
时间:2026-05-27 14:20:02 编辑:袖梨 来源:一聚教程网
作为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修饰确保子类无法篡改类型判断逻辑。
相关文章
- 虾米音乐如何恢复删除的歌单 05-27
- 恐龙神奇宝贝手游恐龙养成攻略 恐龙神奇宝贝手游新手恐龙培养与进阶技巧 05-27
- 全能扫描王使用操作相关问题详情 05-27
- 雷霆大战手游T0船长推荐 雷霆大战手游最强船长阵容与培养指南 05-27
- 铸兵之王开荒指南 铸兵之王新手入门全流程攻略 05-27
- 《快手》号修改方法 05-27