Java反射——獲取Class對(duì)象

Java語(yǔ)言中的反射機(jī)制是一個(gè)對(duì)開(kāi)發(fā)者很有用的機(jī)制,它可以幫助開(kāi)發(fā)者設(shè)計(jì)出優(yōu)越的框架,大大提高開(kāi)發(fā)的效率。

反射機(jī)制的入口為Class對(duì)象,那如何才能獲取到Class對(duì)象呢?
方法有以下三種:

  • 類(lèi).class
  • 對(duì)象.getClass()
  • Class.forName("className")

類(lèi).class

這種方式最直接,但僅能獲取到我已知的類(lèi)的Class對(duì)象,也就是工程內(nèi)用過(guò)的類(lèi)的對(duì)象都可以通過(guò)類(lèi).class方式獲取其Class對(duì)象,但是這種方式有一個(gè)不足就是對(duì)于未知的類(lèi),或者說(shuō)不可見(jiàn)的類(lèi)是不能獲取到其Class對(duì)象的。

對(duì)象.getClass()

Java中的祖先類(lèi)Object提供了一個(gè)方法getClass()來(lái)獲取當(dāng)著實(shí)例的Class對(duì)象,這種方式是開(kāi)發(fā)中用的最多的方式,同樣,它也不能獲取到未知的類(lèi),比如說(shuō)某個(gè)接口的實(shí)現(xiàn)類(lèi)的Class對(duì)象。

Class.forName("className")

這種方式是可以獲取到任何類(lèi)的Class對(duì)象,前提是該類(lèi)存在,否則會(huì)拋出ClassNotFoundException異常。通過(guò)這種方式,我們只需要知道類(lèi)的名稱(完全限定名)即可獲取到其Class對(duì)象(如果存在的話)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,754評(píng)論 18 399
  • Java的Class類(lèi)是java反射機(jī)制的基礎(chǔ),通過(guò)Class類(lèi)我們可以獲得關(guān)于一個(gè)類(lèi)的相關(guān)信息,下面我們來(lái)了解一...
    jiangmo閱讀 927評(píng)論 0 3
  • 1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以讓我們?cè)谶\(yùn)行時(shí)獲取類(lèi)的函數(shù)、...
    Ten_Minutes閱讀 555評(píng)論 0 4
  • 一:java概述:1,JDK:Java Development Kit,java的開(kāi)發(fā)和運(yùn)行環(huán)境,java的開(kāi)發(fā)工...
    ZaneInTheSun閱讀 2,687評(píng)論 0 11
  • 學(xué)習(xí)Android的同學(xué)注意了!!!學(xué)習(xí)過(guò)程中遇到什么問(wèn)題或者想獲取學(xué)習(xí)資源的話,歡迎加入Android學(xué)習(xí)交流群...
    kingZXY2009閱讀 338評(píng)論 0 0