在线一区二区三区高清视频,国产精品妇女一二三区,美女被遭强高潮网站在线播放,实拍各种胸走光见奶头

Java--getClass()和.Class的區(qū)別

時(shí)間:2020-05-08 22:56:38 類(lèi)型:JAVA
字號(hào):    

  在程序運(yùn)行時(shí)期動(dòng)態(tài)獲得對(duì)象類(lèi)型信息的操作,對(duì)比傳統(tǒng)編程和反射的區(qū)別。

  傳統(tǒng)編程:在編譯階段決定使用的類(lèi)型

  反射:動(dòng)態(tài)獲得類(lèi)型

  每個(gè)類(lèi)都會(huì)產(chǎn)生一個(gè)對(duì)應(yīng)的Class對(duì)象,也就是保存在.class文件。所有類(lèi)都是在對(duì)其第一次使用時(shí),動(dòng)態(tài)加載到JVM的,當(dāng)程序創(chuàng)建一個(gè)對(duì)類(lèi)的靜態(tài)成員的引用時(shí),就會(huì)加載這個(gè)類(lèi)。Class對(duì)象僅在需要的時(shí)候才會(huì)加載。

  類(lèi)加載器首先會(huì)檢查這個(gè)類(lèi)的Class對(duì)象是否已被加載過(guò),如果尚未加載,默認(rèn)的類(lèi)加載器就會(huì)根據(jù)類(lèi)名查找對(duì)應(yīng)的.class文件。

  獲得Class對(duì)象的三種方式

  Object的getClass()

  靜態(tài)加載.class

  通過(guò)Class的靜態(tài)方法forName(String className),最為常用

  反射通俗理解是把類(lèi)中各個(gè)組成部分映射成一個(gè)對(duì)象。加載過(guò)程:

  反射加載類(lèi),JVM會(huì)檢測(cè)是否有.class類(lèi)文件

  如果沒(méi)有,則會(huì)把.class文件加載從磁盤(pán)中加載進(jìn)內(nèi)存

  自動(dòng)創(chuàng)建一個(gè)Class對(duì)象,通過(guò)這個(gè)對(duì)象可以得到要?jiǎng)?chuàng)建的對(duì)象實(shí)例

  getClass和.Class區(qū)別?

  我們一般所使用的對(duì)象都直接或間接繼承自O(shè)bject類(lèi),getClass()是Object類(lèi)的方法,它可以獲得一個(gè)實(shí)例的類(lèi)型類(lèi)。

  類(lèi)型類(lèi)指的是代表一個(gè)類(lèi)型的類(lèi),因?yàn)橐磺薪允菍?duì)象,類(lèi)型也不例外,在Java使用類(lèi)型類(lèi)來(lái)表示一個(gè)類(lèi)型。所有的類(lèi)型類(lèi)都是Class類(lèi)的實(shí)例。

  public static void main(String[] args) {

  ClassA a=new ClassA();

  System.out.println(a.getClass());

  System.out.println(ClassA.class);

  }

  對(duì)象a是A的一個(gè)實(shí)例,ClassA是某一個(gè)類(lèi),在Java中表示一個(gè)特定類(lèi)型的類(lèi)型類(lèi)可以用“類(lèi)型.class”的方式獲得,因?yàn)閍.getClass()獲得是ClassA的類(lèi)型類(lèi),也就是ClassA.class。所以ClassA.class和a.getClass()是一樣的。

  類(lèi)型類(lèi)是一一對(duì)應(yīng)的,父類(lèi)的類(lèi)型類(lèi)和子類(lèi)的類(lèi)型類(lèi)是不同的,因此,假設(shè)ClassA是ClassB的子類(lèi),那么ClassB.class和a.getClass是不一樣的。

  getClass方法,有多態(tài)能力,運(yùn)行時(shí)可以返回子類(lèi)的類(lèi)型信息,

  .class是沒(méi)有多態(tài)的,是靜態(tài)解析的,編譯時(shí)可以確定類(lèi)型信息。

  ————————————————

  版權(quán)聲明:本文為CSDN博主「mayfla」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

  原文鏈接:https://blog.csdn.net/mayfla/java/article/details/80096624


<