1. 程式人生 > >java基礎學習總結(八):Java中的反射

java基礎學習總結(八):Java中的反射

Native

     JDK開放給使用者的原始碼中隨處可見Native方法,被Native關鍵字宣告的方法說明該方法不是以Java語言實現的,而是以本地語言實現的,Java可以直接拿來用。這裡有一個概念,就是本地語言,本地語言這四個字,個人理解應該就是可以和作業系統直接互動的語言

     Java不在乎Native方法是用什麼語言實現的,只要一來語言能和底層打交道就好了,二來語言實現完可以提供出來.dll/.so檔案。因此同一個Native方法,如果不同的Java虛擬機器去呼叫它,那麼結果可能都不同,比如Object的hashCode(),當然,執行效率也不盡然相同,因為不同的虛擬機器對於不同的Native方法有自己的實現。

反射的作用

Java反射描述的是,在執行狀態中:

1、對於任意一個類,都能夠知道這個類的所有屬性和方法

2、對於任意一個類,都能夠呼叫它的任意一個屬性和方法

      之所以強調屬性、方法,是因為屬性、方法是開發者對於一個類最關注的兩個部分。實際上通過反射,不僅僅可以獲知類的屬性、方法,還可以獲知類的父類、介面、包等資訊

      一個類在載入的時候,會在記憶體中生成一個代表這個.class檔案的java.lang.Class物件,.classs檔案裡面就包含了描述這個類的資訊的一切內容。至於.class檔案,是由Java編譯器(注意是Java編譯器,指的不僅僅是Javac)編譯而來的