Java源码学习-Object

Source Code学习之Java万类之祖:Object

Methods:

方法不多,一个一个来看。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package java.lang;

/**
* Class {@code Object} is the root of the class hierarchy.
* Every class has {@code Object} as a superclass. All objects,
* including arrays, implement the methods of this class.
*
* @author unascribed
* @see java.lang.Class
* @since JDK1.0
*/
public class Object {
//装载本地库函数。基本上属于 Native 方法的多少都跟 JVM带点关系,这些追踪的到最后都会变成.cpp,所以就不深究了。
private static native void registerNatives();

//装载本地库函数,用于载入Obejct类中调用的本地库
static {
registerNatives();
}

//返回对象的运行时类型 由 JVM 实现 为反射提供了基础
public final native Class<?> getClass();

//重点关注方法,与 equals() 方法互相对应。
public native int hashCode();

//比较对象地址值是否相等
public boolean equals(Object obj) {
return (this == obj);
}

protected native Object clone() throws CloneNotSupportedException;
//返回对象的全类名(包含包名),Integer.toHexString(hashCode()) 是以16进制无符号整数形式返回此哈希吗的字符串表示形式。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}


public final native void notify();


public final native void notifyAll();


public final native void wait(long timeout) throws InterruptedException;

public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
}

if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}

if (nanos > 0) {
timeout++;
}

wait(timeout);
}


public final void wait() throws InterruptedException {
wait(0);
}

protected void finalize() throws Throwable { }
分享到:
0%