国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

透徹分析反射的基礎_Class類

2019-11-14 22:42:31
字體:
來源:轉載
供稿:網友
透徹分析反射的基礎_Class類一、反射的基石--->Class類
1. java類用于描述一類事物的特性,該類事物有什么屬性,沒有什么屬性,值域這個屬性的值是什么,則是由這個類的實例對象來確定的,不同的實例對象有不同的屬性值。Java程序中的各個Java類,他們是否屬于同一類事物,是不是可以用一個類來描述這類事物呢?這個類的名字就是Class,要注意與小寫class關鍵字的區別哦。Class類描述了哪些方面的信息呢?類的名字,類的訪問屬性,類所屬的包名,字段名稱的列表,方法名稱的列表,等等。學習反射,首先就要明白Class這個類。

 

  • Java程序中的各個Java類屬于同一類事物,描述這類事物的Java類名就是Class
    • public class Class
  • 對比提問:眾多的人用一個什么類表示?眾多的Java類用一個什么表示?
    • 人—>Person
    • Java類—>Class
  • 對比提問:Person類代表人,它的實例對象就是張三,李四這樣一個個具體的人,Class類代表Java類,它的各個實例對象分別對應什么呢?
    • 對應各個類在內存中的字節碼,例如,Person類的字節碼,ArrayList類的字節碼,等等。
    • 一個類被類加載器加載到內存中,占用一片存儲空間,這個空間里的內容就是字節碼,不同的類的字節碼是不同的,所以它們在內存中的內容是不同的,這一個個的空間分別用一個個的對象來表示,這些對象顯然具有同樣的類型,這個類型是什么呢?
  • 如何得到各個字節碼對應的實例對象(Class類型)
    • 類名.class,例如 System.class//通過類名得到字節碼實例
    • 對象.getClass(),例如 new Date().getClass();//通過實例得到字節碼實例
    • Class.forName("類名");     Class.forName("java.util.Date");//適合于類字節碼尚未加載到內存的情況下
      • java.util.Date是一個字符串,如果事先不知道將加載哪個類,就傳一個String,動態的加載字符串指定的類字節碼。

 

  • 八個基本類型和void也對應表現為自己的Class字節碼對象。
    • Class cls1=int.class;
    • Class cls2=void.class;

 

  • 數組類型 的Class實例對象
    • Class.isArray()
package com.itcast.day1;public class ReflectTest {     public static void main(String[] args)throws Exception {                 //分別用三種方式得到 String類在內存中的字節碼         Class cls1=String.class;//01. 類名.class                 String str="123";         Class cls2=str.getClass();//02. 實例.getClass()                 String classUrl="java.lang.String";         Class cls3=Class.forName(classUrl);//03. Class.forName(類名)                 //三種方法是得到了同一份字節碼。         System.out.PRintln(cls1 == cls2);//true         System.out.println(cls1 == cls3);//true                 System.out.println(cls1.isPrimitive());//false,不是基本類型的字節碼         System.out.println(int.class.isPrimitive());//true 基本類型的字節碼         System.out.println(int.class == Integer.class);//false 基本類型和包裝類型不是一份字節碼         System.out.println(int.class == Integer.TYPE);//true Integer.TYPE就代表包裝對應的基本類型的字節碼                                 System.out.println(int[].class.isPrimitive());//false 數組也是一種類型,但不是基本類型         System.out.println(int[].class.isArray());//true 是否是數組             } }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 达尔| 镶黄旗| 炎陵县| 咸丰县| 利川市| 台北市| 宁津县| 商城县| 尉氏县| 元朗区| 鲜城| 凤翔县| 湛江市| 孟州市| 伊金霍洛旗| 赫章县| 眉山市| 秦皇岛市| 嘉鱼县| 乐东| 金华市| 开化县| 龙泉市| 靖江市| 晋江市| 弥渡县| 牟定县| 万州区| 崇州市| 鄂州市| 珲春市| 商河县| 理塘县| 济源市| 柳州市| 甘肃省| 清苑县| 财经| 武功县| 宜昌市| 扬中市|