關於Java基類Object
阿新 • • 發佈:2018-11-19
java.lang.Object,Object是Java所有類的祖先類(父類)
1.首先看object原始碼 JDK1.7(oracle):public class Object { //本地方法,C/C++在DLL中實現,通過JNI呼叫 private static native void registerNatives(); //類初始化呼叫此方法 static { registerNatives(); } //返回此Object的執行時類(每個類的Class類物件)
//notify()/notifyAll()/wait()以及wait兩個過載方法都是執行緒同步相關方法 public
//物件被回收時呼叫,不管如何,一個物件只調用一次 protected void finalize() throws Throwable { }
可見object中擁有native,hashCode,euqals,clone,toString,wait,notify,notifyAll,finalize這幾個方法,其中常用的方法有
equals,toString,以及執行緒中常常呼叫的wait,notify,notyfiAll方法。
另外:
原始碼中並沒有Object的構造方法,但是,同樣的,編譯器在編譯期間會給Object(事實上,所有的Java類,只要類中沒有
構造方法,編譯器都會預設的給一個空構造方法,若已有構造方法,則不會新增)一個預設的空的構造方法
public Object(){}
帶有native修飾的都是本地方法,所謂的本地方法是不通過Java語言實現的方法,但可以通過JNI,像呼叫Java方法一樣呼叫
這些方法。詳細的可以搜尋檢視JNI。 這個方法的作用是對Object以下幾個本地方法(hashCode/clone/notify等)進行註冊
(可以理解為,這個方法是告訴JVM這幾個本地方法的實現對映),每一個有本地方法的都會有這個方法,但其內容不一樣
(因為註冊的方法不一樣嘛)。