反射機制(二)獲取Class實例的三種方式

獲取Class實例

import java.util.Date;

//獲取字節(jié)碼對象(Class對象)
public class GetClassInstance {
    public static void main(String[] args) throws Exception {
//需求:獲取java.util.Date類的字節(jié)碼對象

//        方式一:使用class屬性
        Class<java.util.Date> clz1 = java.util.Date.class;

//        方式二:通過對象的getClass方法來獲取肥印,getClass是Object類中的方法;返回次Object的運行時類
        java.util.Date date = new java.util.Date();
        Class<?> clz2 = date.getClass();

//        方式三:通過Class類中的靜態(tài)方法forName(String className);
        Class clz3 =Class.forName("java.util.Date");

        System.out.println(clz1);
        System.out.println(clz2);
        System.out.println(clz3);

        System.out.println(clz1 == clz2);
        System.out.println(clz1 == clz3);
        System.out.println(clz3 == clz2);
        /*Console:
        class java.util.Date
        class java.util.Date
        class java.util.Date
        true
        true
        true
        */
    }
}

第三種使用最多柱宦,框架中大量使用熬丧;

九大內(nèi)置的Class實例

思考一個問題:
在前面講述了三種獲取Class對象的方式舵鳞,基本數(shù)據(jù)類型不能表示為對象(注意:包裝類包裝的是值),也就不能使用getClass()的方式狡孔,基本類型沒有類名的概念懂诗,也就無法使用Class.forName()的方式,如何表示基本類型的字節(jié)碼對象呢苗膝?

所有的數(shù)據(jù)類型都有class屬性殃恒,其語法為:
Class clz = 數(shù)據(jù)類型.class ;

九大內(nèi)置Class實例:

-JVM預(yù)先提供好的Class實例,分別為:
byte,short,int,long,float,double,char,boolean,void辱揭;
注意這里的void也是屬于基本類的离唐。


八大基本數(shù)據(jù)類型的包裝類中,都有一個常量 :TYPE问窃;用于返回該包裝類對應(yīng)基本類的字節(jié)碼對象;
System.out.println(Integer.TYPE == int.class);//true

注意:Integer和int是不同的數(shù)據(jù)類型

System類中的identityHashCode()簡單說明一下:
一個對象的identityHashCode能夠始終和該對象的內(nèi)部地址有一個相對應(yīng)的關(guān)系亥鬓,從這個角度來講,它可以用于代表對象的引用地址域庇。

public class IntClasses {
  public static void main(String[] args) {
    Class<Integer> a = int.class;
    Class<Integer> b = Integer.TYPE;
    Class<Integer> c = Integer.class;

    System.out.println(System.identityHashCode(a));
    System.out.println(System.identityHashCode(b));
    System.out.println(System.identityHashCode(c));
  }
}

示例輸出(每次都是不同的嵌戈,但前兩個總是相同的,第三個實際上總是不同的,因為是JVM內(nèi)置的):

1627674070
1627674070
1360875712

數(shù)組的Class實例

數(shù)組是引用數(shù)據(jù)類型较剃,數(shù)組其實是對象咕别;
-在Object類中開頭有說明:
/*
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.
    */
    --接口是一種特殊的類,也可以調(diào)用Object類中的方法写穴;

如何表示數(shù)組的Class實例:

int[] arr1 = {1,2,3};

//方式一:數(shù)組類型.class;

Class<int[]> arr1Class = int[].class

//方式二:數(shù)組對象.getClass();

Class<int[]> arr2Class = arr.getClass();

System.out.println(arr1Class == arr2Class);
//true -比較的是否為同一份字節(jié)碼惰拱;

//*注意:所有具有相同的維度和相同元素類型的數(shù)組共享同一份字節(jié)碼對象,和元素沒有關(guān)系啊送!
//-Object類中有說明偿短;
即:int[] arr2 = {4,5,6,7,8,9};
System.out.println(arr1.getClass() == arr2.getClass());//true 

Class與Object的區(qū)別

Class:描述所有的類型,所以在Class類中應(yīng)該具有所有類型的相同方法馋没;
Object:描述所有的對象昔逗,所以在Object類用應(yīng)該具有所有對象的共同的方法;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末篷朵,一起剝皮案震驚了整個濱河市勾怒,隨后出現(xiàn)的幾起案子婆排,更是在濱河造成了極大的恐慌,老刑警劉巖笔链,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件段只,死亡現(xiàn)場離奇詭異,居然都是意外死亡鉴扫,警方通過查閱死者的電腦和手機赞枕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坪创,“玉大人炕婶,你說我怎么就攤上這事±吃ぃ” “怎么了柠掂?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锁施。 經(jīng)常有香客問我陪踩,道長,這世上最難降的妖魔是什么悉抵? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任肩狂,我火速辦了婚禮,結(jié)果婚禮上姥饰,老公的妹妹穿的比我還像新娘傻谁。我一直安慰自己,他們只是感情好列粪,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布审磁。 她就那樣靜靜地躺著,像睡著了一般岂座。 火紅的嫁衣襯著肌膚如雪态蒂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天费什,我揣著相機與錄音钾恢,去河邊找鬼。 笑死鸳址,一個胖子當著我的面吹牛瘩蚪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稿黍,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼疹瘦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巡球?” 一聲冷哼從身側(cè)響起言沐,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤邓嘹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后险胰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吴超,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年鸯乃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跋涣。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡缨睡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陈辱,到底是詐尸還是另有隱情奖年,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布沛贪,位于F島的核電站陋守,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏利赋。R本人自食惡果不足惜水评,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望媚送。 院中可真熱鬧中燥,春花似錦、人聲如沸塘偎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吟秩。三九已至咱扣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涵防,已是汗流浹背闹伪。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留武学,地道東北人祭往。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像火窒,于是被迫代替她去往敵國和親硼补。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,737評論 25 707
  • 夜熏矿,禁了月的光華已骇;月离钝,劃了夜的墳?zāi)埂?血色浸透了月,血色渲染了夜褪储。暗紅的月色卵渴,裝飾了誰的窗沿? 多年前的鲤竹,“我要與...
    長歌霧后閱讀 240評論 4 3
  • Python數(shù)據(jù)庫編程 ORM-SQLAlchemy學(xué)習(xí) 一浪读、ORM背景介紹 如果寫程序用pymysql和程序交互...
    weizt閱讀 100評論 0 0
  • 一到過年碘橘,各種各樣的相親接踵而來,有一天相一個的吱肌,有一天相好幾個的痘拆,有朋友介紹的,有同事介紹的氮墨,有親戚介紹的纺蛆,有鄰...
    情愛說閱讀 286評論 0 0