<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 11,  comments - 0,  trackbacks - 0

     

    在java程序中每一個(gè)類都有一個(gè)Class對(duì)象,被保存在同名的.Class對(duì)象當(dāng)中,JVM會(huì)使用類加載器加載Class文件生成類的對(duì)象信息.

    當(dāng)我們創(chuàng)建一個(gè)類的對(duì)象或者調(diào)用這個(gè)對(duì)象的靜態(tài)方法,jvm會(huì)自動(dòng)加載類的對(duì)象信息

    獲得類的對(duì)象信息

    我們一般常用用兩種方式獲得類的對(duì)象信息.

    1. 我們可以用Class.forName()方法動(dòng)態(tài)的根據(jù)類名獲得一個(gè)類的Class對(duì)象.

      1:     /**
      2:      * 使用此方法為自動(dòng)初始化靜態(tài)變量和執(zhí)行static塊的代碼
      3:      * 如果找不到對(duì)象會(huì)拋出一個(gè)ClassNotFoundException
      4:      */
      5:     Class second = Class.forName("classLoad.Second");

    2. 我們還可以用Class class = ClassName.class 來(lái)直接獲取一個(gè)類的類型信息,但用它和Class.forName()獲取類的對(duì)象

    引用信息在靜態(tài)塊時(shí)的執(zhí)行時(shí)間上不同,看下面的例子:

    一個(gè)普通類信息

      1: interface Interface{
      2:   public static String interFlag = "接口";
      3:   
      4: }
      5: 
      6: class Parent implements Interface{
      7:   public static String parntFLAG = "父類靜態(tài)變量";
      8:   static{
      9:     final  String flag2 = "flag2";//static 區(qū)中只能用final修飾
     10:     System.out.println("我在父類靜態(tài)區(qū)里面!"+parntFLAG);
     11:   }
     12:   
     13:   public  Parent(){
     14:     System.out.println("我在父類構(gòu)造函數(shù)里面!");
     15:   }
     16: }
     17: 
     18: 
     19: class Son extends  Parent{
     20:   public static String sonFLAG = "子類類靜態(tài)變量";
     21:   static{
     22:     System.out.println("我在子類靜態(tài)區(qū)里面!"+sonFLAG);
     23:   }
     24:   
     25:   public Son(){
     26:     System.out.println("我在子類構(gòu)造函數(shù)里面!");
     27:   }
     28: }
      1: interface Interface{
      2:   public static String interFlag = "接口";
      3:   
      4: }
      5: 
      6: class Parent implements Interface{
      7:   public static String parntFLAG = "父類靜態(tài)變量";
      8:   static{
      9:     final  String flag2 = "flag2";//static 區(qū)中只能用final修飾
     10:     System.out.println("我在父類靜態(tài)區(qū)里面!"+parntFLAG);
     11:   }
     12:   
     13:   public  Parent(){
     14:     System.out.println("我在父類構(gòu)造函數(shù)里面!");
     15:   }
     16: }
     17: 
     18: 
     19: class Son extends  Parent{
     20:   public static String sonFLAG = "子類類靜態(tài)變量";
     21:   static{
     22:     System.out.println("我在子類靜態(tài)區(qū)里面!"+sonFLAG);
     23:   }
     24:   
     25:   public Son(){
     26:     System.out.println("我在子類構(gòu)造函數(shù)里面!");
     27:   }
     28: }

    使用這種方法引用類的對(duì)象不會(huì)始化靜態(tài)變量和執(zhí)行靜態(tài)塊信息,這些代碼方法會(huì)在首次引用時(shí)執(zhí)行.

    如下引用父類的靜態(tài)變量,不會(huì)執(zhí)行子類的靜態(tài)塊.

      1: public class ClassLoad {
      2:   public static void main(String[] args) throws ClassNotFoundException  {
      3:     
      4:     //Son son = new Son();
      5:     /**
      6:      * 我們使用一個(gè)類的時(shí)候需要進(jìn)行以下3項(xiàng)工作.
      7:      * 1.加載,
      8:      * 2.鏈接
      9:      * 3.初始化,此步會(huì)初始化靜態(tài)變量和執(zhí)行靜態(tài)塊信息,但是這種方法會(huì)在
     10:      * 真正調(diào)用方法時(shí)執(zhí)行
     11:      */
     12:     Class son = Son.class;
     13:     System.out.println("靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!");
     14:     // parntFLAG 是父類的靜態(tài)變量 
     15:     // 此處只會(huì)執(zhí)行父類的靜態(tài)快
     16:     System.out.println(Son.parntFLAG);
     17: 
     18:     /**
     19:      * 運(yùn)行結(jié)果
     20:      *靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!
     21:      *我在父類靜態(tài)區(qū)里面!父類靜態(tài)變量
     22:      *父類靜態(tài)變量
     23:      */
     24:   }
     25: }

    打印子類的靜態(tài)變量,所有的代碼都會(huì)執(zhí)行

      1: 
      2: public class ClassLoad {
      3:   public static void main(String[] args) throws ClassNotFoundException  {
      4:     
      5:     //Son son = new Son();
      6:     /**
      7:      * 我們使用一個(gè)類的時(shí)候需要進(jìn)行以下3項(xiàng)工作.
      8:      * 1.加載,
      9:      * 2.鏈接
     10:      * 3.初始化,此步會(huì)初始化靜態(tài)變量和執(zhí)行靜態(tài)塊信息,但是這種方法會(huì)在
     11:      * 真正調(diào)用方法時(shí)執(zhí)行
     12:      */
     13:     Class son = Son.class;
     14:     System.out.println("靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!");
     15:     // parntFLAG 是父類的靜態(tài)變量 
     16:     // 此處只會(huì)執(zhí)行父類的靜態(tài)快
     17:     System.out.println(Son.sonFLAG);
     18: 
     19:     /**
     20:      * 運(yùn)行結(jié)果
     21:      * 靜態(tài)區(qū)的初始化會(huì)在調(diào)用時(shí)執(zhí)行!
     22:      * 我在父類靜態(tài)區(qū)里面!父類靜態(tài)變量
     23:      * 我在子類靜態(tài)區(qū)里面!子類類靜態(tài)變量
     24:      * 子類類靜態(tài)變量
     25:      */
     26:   }
     27: }

     

    但是使用Class.forName 類加載時(shí)就會(huì)完成初始化工作.

      1: public class ClassLoad {
      2:   public static void main(String[] args) throws Exception  {
      3:     /**
      4:      * 使用Class.forName會(huì)自動(dòng)加載所有靜態(tài)區(qū)的信息
      5:      */
      6:     Class son = Class.forName("classLoad.Son");
      7:     Son instance = (Son)son.newInstance();
      8:     /*
      9:      * 執(zhí)行結(jié)果
     10:      * 我在父類靜態(tài)區(qū)里面!父類靜態(tài)變量
     11:      * 我在子類靜態(tài)區(qū)里面!子類類靜態(tài)變量
     12:      * 我在父類構(gòu)造函數(shù)里面!
     13:      * 我在子類構(gòu)造函數(shù)里面!
     14:      */  
     15: 
     16:   }
     17: }
    posted on 2011-03-13 18:41 小暉 閱讀(891) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2011年3月>
    272812345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章分類

    相冊(cè)

    最新隨筆

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产精品一区二区三区免费| 91短视频免费在线观看| 亚洲av综合avav中文| 3344永久在线观看视频免费首页 | 中文国产成人精品久久亚洲精品AⅤ无码精品 | xx视频在线永久免费观看| 亚洲另类无码专区丝袜| 激情综合色五月丁香六月亚洲| 亚洲电影免费观看| 一级做a爰片性色毛片免费网站| 亚洲一区二区在线视频| 免费一级毛片在级播放| 亚洲精品免费在线观看| 羞羞视频免费观看| 亚洲成人一级电影| 伊人久久综在合线亚洲91| 欧美三级在线电影免费| 免费看成人AA片无码视频吃奶| 亚洲国产午夜精品理论片在线播放| 国产亚洲综合成人91精品| 在线观看免费精品国产| 日韩免费无码一区二区三区| 污污免费在线观看| 亚洲中文字幕无码一去台湾| 国产V亚洲V天堂A无码| 国产一区二区三区免费看| 亚欧色视频在线观看免费| 成在线人视频免费视频| 国产亚洲人成在线播放| 亚洲伊人精品综合在合线| 亚洲AV成人片色在线观看| 亚洲天堂在线视频| 免费人成网站7777视频| 国产v精品成人免费视频400条| 国产免费一区二区视频| 成人免费乱码大片A毛片| 亚洲av日韩专区在线观看| 亚洲AV色吊丝无码| 亚洲精品在线电影| 亚洲第一精品在线视频| 国产精品亚洲A∨天堂不卡|