免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
關(guān)于Class對(duì)象的作用與產(chǎn)生

Class對(duì)象是用來(lái)創(chuàng)建類(lèi)的常規(guī)對(duì)象的,當(dāng)我們編譯一個(gè)Java類(lèi)就會(huì)同時(shí)產(chǎn)生一個(gè)與該類(lèi)相對(duì)應(yīng)的Class對(duì)象(保存在.class文件中)。該Class對(duì)象中保存了創(chuàng)建對(duì)象所需的所有信息。

  共有三種產(chǎn)生Class對(duì)象的方法下面分別說(shuō)明之:

  1.public static Class< > Class.forName("完整的類(lèi)名") throws ClassNotFoundException;

  public static Class< > forName(String name, boolean initialize,

  ClassLoader loader) throws ClassNotFoundException

  假若我們用Class.forName("");的方式獲取Class對(duì)象,其實(shí)就相當(dāng)于Class.forName("完整類(lèi)名", true, this.getClass().getClassLoader())也就是說(shuō)在默認(rèn)情況下在產(chǎn)生Class對(duì)象的同時(shí)會(huì)對(duì)該Class對(duì)象進(jìn)行初始化(若以前沒(méi)有初始化過(guò))。

  2.public final Class< extends Object> getClass()

  可以通過(guò)任何實(shí)例對(duì)象來(lái)引用該方法來(lái)獲取相應(yīng)的Class對(duì)象。使用此種方式的前提是我們需要產(chǎn)生相應(yīng)的實(shí)例對(duì)象。

  3.類(lèi)名.class 此種方式產(chǎn)生Class對(duì)象較前兩種簡(jiǎn)單,無(wú)需第一種還要進(jìn)行異常處理(在編譯期就進(jìn)行錯(cuò)誤的檢查了)。此種方式不會(huì)自動(dòng)初始化該Class對(duì)象。初始化被延遲到對(duì)靜態(tài)方法(包括構(gòu)造方法)或非常數(shù)靜態(tài)進(jìn)行首次引用時(shí)才進(jìn)行。

  

      import java.util.*;

  class Initable{

  static final int staticFinal = 47;

  static final int staticFinal2 = ClassInitialization.rand.nextInt(100);

  static{

  System.out.println("Initialization Initable");

  }

  }

  class Initable2{

  static int staticNoFinal = 147;

  static{

  System.out.println("Initialization Initable2");

  }

  }

  class Initable3{

  static int staticNoFinal = 74;

  static{

  System.out.println("Initialization Initable3");

  }

  }

  public class ClassInitialization

  {

  public static Random rand = new Randdom(47);

  public static void main(String[] args){

  Class initable = Initable.class; //不會(huì)引起初始化

  System.out.println("after creating Initable reference");

  System.out.println(Initable.staticFinal); //引用編譯器常量不會(huì)引起初始化

  System.out.println(Initable.staticFinal2); //引起初始化

  System.out.println(Initable2.staticNoFinal); //引用非編譯期常量會(huì)引起初始化

  Class initable3 = Class.forName("Initable3"); //默認(rèn)會(huì)引起初始化

  System.out.println("after creating Initable3 reference");

  System.out.println(Initable3.staticNoFinal);//前面已經(jīng)初始化此處不用再初始化

  }

  }

  輸出結(jié)果:

  after creating Initable reference

  47

  Initialization Initable

  258

  Initialization Initable2

  147

  Initialization Initable3

  after creating Initable3 reference

  74

  如果一個(gè)static final值是編譯期常量,那么對(duì)該值的引用無(wú)需對(duì)其所在類(lèi)進(jìn)行初始化;若僅僅是static和final但不是編譯期常量,則會(huì)引發(fā)初始化其類(lèi)。若是引用一個(gè)static值則要進(jìn)行鏈接并對(duì)其所在類(lèi)進(jìn)行初始化。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
深入理解Java類(lèi)型信息(Class對(duì)象)與反射機(jī)制
Class.forName()與xxx.class的區(qū)別
java類(lèi)裝載器
名.class與Class.forName與ClassLoader.loadClass的區(qū)...
初始化
類(lèi)名.this與類(lèi)名.class
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服