麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

初始化類時(shí)newInstance和new的區(qū)別

2019-11-18 13:15:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  在初始化一個(gè)類,生成一個(gè)實(shí)例的時(shí)候;newInstance() 和 new 有什么區(qū)別?
  用newInstance與用new是區(qū)別的,區(qū)別在于創(chuàng)建對(duì)象的方式不一樣,前者是使用類加載機(jī)制,那么為什么會(huì)有兩種創(chuàng)建對(duì)象方式?這個(gè)就要從可伸縮、可擴(kuò)展,可重用等軟件思想上解釋了。
  java中工廠模式經(jīng)常使用newInstance來(lái)創(chuàng)建對(duì)象,因此從為什么要使用工廠模式上也可以找到具體答案。
  例如:
  Class c = Class.forName(“A”);factory = (AInterface)c.newInstance();
  其中AInterface是A的接口,假如下面這樣寫,你可能會(huì)理解:
  String className = "A";Class c = Class.forName(className);factory = (AInterface)c.newInstance();
  進(jìn)一步,假如下面寫,你可能會(huì)理解:
  String className = readfromxmlConfig;//從xml 配置文件中獲得字符串Class c = Class.forName(className);factory = (AInterface)c.newInstance();
  上面代碼就消滅了A類名稱,優(yōu)點(diǎn):無(wú)論A類怎么變化,上述代碼不變,甚至可以更換A的兄弟類B , C , D....等,只要他們繼續(xù)Ainterface就可以。
   從jvm的角度看,我們使用new的時(shí)候,這個(gè)要new的類可以沒(méi)有加載;
  但是使用newInstance時(shí)候,就必須保證:1、這個(gè)類已經(jīng)加載;2、這個(gè)類已經(jīng)連接了。而完成上面兩個(gè)步驟的正是class的靜態(tài)方法forName()方法,這個(gè)靜態(tài)方法調(diào)用了啟動(dòng)類加載器(就是加載java API的那個(gè)加載器)。
  有了上面jvm上的理解,那么我們可以這樣說(shuō),newInstance實(shí)際上是把new這個(gè)方式分解為兩步,即,首先調(diào)用class的加載方法加載某個(gè)類,然后實(shí)例化。
  這樣分步的好處是顯而易見(jiàn)的。我們可以在調(diào)用class的靜態(tài)加載方法forName時(shí)獲得更好的靈活性,提供給了我們降耦的手段。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲精品成人久久久 | 久久久噜噜噜久久熟有声小说 | 国产精品成人一区二区三区电影毛片 | 久综合 | 国产精彩视频在线 | 视频一区二区在线观看 | 久久99国产精品久久99果冻传媒 | 国产午夜三级一区二区三桃花影视 | 精品久久久久久 | 俄罗斯hdxxx 日夜操天天干 | 九九热在线精品视频 | 亚洲欧美国产精品va在线观看 | 国产午夜精品一区二区三区免费 | 亚洲免费视频一区 | 色网站免费观看 | 色婷婷一区二区三区 | 新久草视频 | 毛片av网址| 欧美粗暴analvideos | 久草经典视频 | 日本在线不卡一区二区 | 日本一道aⅴ不卡免费播放 久久久久久久高清 | 激情亚洲一区二区三区 | 国产亚洲欧美日韩在线观看不卡 | 亚洲婷婷日日综合婷婷噜噜噜 | 国产成人精品日本亚洲语音 | 欧美黄色免费视频 | 欧美一级高潮 | 成人男女啪啪免费观看网站四虎 | 成人综合免费视频 | 看免费一级毛片 | xxxx18韩国护士hd老师 | 亚洲精品欧美二区三区中文字幕 | 免费国产羞羞网站视频 | 国产精品久久亚洲 | 中文字幕一区在线观看视频 | 香蕉在线播放 | 国产精品9191| 在线成人看片 | 中国女人内谢69xxxx天美 | 成人国产精品久久久 |