我對Java的java.lang.Class這個類的深入理解


 

類是對同一類事物的描述,字段具體的值只有到類實例化時才會指定,靜態字段除外。
所有的類也是同一類事物,用Class這個類來描述。Class類與String、Person等類
是同一個級別的。
java的字節碼文件被加載到方法區中后,會在堆中實例化一個java.lang.Class類的對象,
這個對象封裝了方法區內的數據結構,並向程序員提供了訪問方法區內的數據結構的接口

反射就是把Java類中的各種成分映射成相應的java類。例如,一個Java類用一個Class類
的對象來表示,一個類中的組成部分:成員字段,方法,構造方法,包等等信息也用一個個
的Java類來表示,就像汽車是一個類,汽車中的發動機,變速箱等等也是一個個的類。表示
Java類的Class類顯示要提供一系列的方法,來獲得其中的字段,方法,構造方法,修飾符,
包等信息,這些信息就是用相應類的實例對象來表示,它們是Field、Method、Contructor、
Package等等。

模擬Class類的定義:

public class Class
{
  private Package package;
  private Modifiers[] modifiers;
  private Class superClass;
  private Class[] interfaces;
  private Field[] fields;
  private Method[] methods;

  //getter 和 setter
}

在java的Class類的源代碼中沒有定義上述的各種字段,只提供了getter和setter方法。因為Class類封裝了他要描述的類的
已經加載到內存中的字節碼流,通過這個流可以獲得上述的各種字段信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM