乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      運(yùn)行時類型信息

       yliu277 2019-07-23

      RTTI(在運(yùn)行時,識別一個對象的類型)可以在程序運(yùn)行時發(fā)現(xiàn)和使用類型信息,這就打破了只能在編譯期執(zhí)行面向類型的操作的限制。使用它,可以查詢某個Shape引用所指向的對象的確切類型,然后選擇或者剔除特例。在面向?qū)ο缶幊讨校话阕尨a只操縱對基類的引用。在Java中,所有的類型轉(zhuǎn)換都是在運(yùn)行時進(jìn)行正確性檢查的。

      Shape對象實際執(zhí)行什么樣的代碼,是由引用所指向的具體對象(Circle、Square或者Triangle)而決定的。這符合要求:你希望大部分代碼盡可能少地了解對象的具體類型,而是只與對象家族中的一個通用表示打交道(Shape基類)。這樣的代碼會容易寫、讀和維護(hù)。

      Class對象

      class對象負(fù)責(zé)表示在運(yùn)行時的類型信息,它包含了與類有關(guān)的信息。每當(dāng)編寫并編譯了一個新類,就會產(chǎn)生一個Class對象(更恰當(dāng)?shù)卣f,是被保存在一個同名的.class文件中)。Java程序在它開始運(yùn)行之前并非被完全加載,其各個部分是在必需時才加載的。當(dāng)程序創(chuàng)建第一個對類的靜態(tài)成員的引用(構(gòu)造器也是類的靜態(tài)方法)時,就會加載這個類到JVM中。

      類加載器首先檢查這個類的Class對象是否已經(jīng)加載。如果未加載,默認(rèn)的類加載器就會根據(jù)類名查找.class文件,而且其字節(jié)碼被加載時,要接受驗證,以確保其沒有被破壞。一旦某個類的Class對象被載入內(nèi)存,它就被用來創(chuàng)建這個類的所有對象。無論何時,只要你想在運(yùn)行時使用類型信息,就必須首先獲得對恰當(dāng)?shù)腃lass對象的引用,實現(xiàn)此功能的途徑有:

      Class.forName('全限定名')會取得一個Class對象的引用,苦類還沒有被加載就加載它,找不到你要加載的類,會拋出異常ClassNotFoundException;

      如果你已經(jīng)擁有了一個感興趣的類型的對象,可以通過調(diào)用getClass()方法來獲取Class引用,這個方法將返回表示該對象的實際類型的Class引用。Class.getName()、getSimpleName()和getCanonicalName()分別會產(chǎn)生全限定的類名、類別和全限定類名。當(dāng)使用Class.newInstance()創(chuàng)建新實例時,會得到Object引用,但這個引用指向的實際對象。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多