反射

一棵帽、反射

Class類也是類的一種,只是名字和class關(guān)鍵字高度相似。Java是大小寫敏感的語言翘瓮。
Class類的對象內(nèi)容是你創(chuàng)建的類的類型信息,比如你創(chuàng)建一個shapes類裤翩,那么资盅,Java會生成一個內(nèi)容是shapes的Class類的對象
Class類的對象不能像普通類一樣,以 new shapes() 的方式創(chuàng)建踊赠,它的對象只能由JVM創(chuàng)建呵扛,因為這個類沒有public構(gòu)造函數(shù)
Class類的作用是運行時提供或獲得某個對象的類型信息,和C++中的typeid()函數(shù)類似筐带。這些信息也可用于反射今穿。

1.Class類原理

我們都知道所有的java類都是繼承了object這個類,在object這個類中有一個方法:getclass().這個方法是用來取得該類已經(jīng)被實例化了的對象的該類的引用伦籍,這個引用指向的是Class類的對象蓝晒。我們自己無法生成一個Class對象(構(gòu)造函數(shù)為private),而 這個Class類的對象是在當(dāng)各類被調(diào)入時帖鸦,由 Java 虛擬機(jī)自動創(chuàng)建 Class 對象芝薇,或通過類裝載器中的 defineClass 方法生成。我們生成的對象都會有個字段記錄該對象所屬類在CLass類的對象的所在位置作儿。如下圖所示:

2.活的一個Class 對象

  • Class clazz = Class.forName('className');

  • public class shapes{}
    shapes s1=new shapes();
    Class obj=s1.getClass();
    Class obj1=s1.getSuperclass();//這個函數(shù)作用是獲取shapes類的父類的類型

  • Class<shapes> obj=shapes.class;
    shapes newShape=obj.newInstance();

》》基本方法
getClassLoader()
獲取該類的類裝載器洛二。
getComponentType()
如果當(dāng)前類表示一個數(shù)組,則返回表示該數(shù)組組件的 Class 對象攻锰,否則返回 null晾嘶。
getConstructor(Class[])
返回當(dāng)前 Class 對象表示的類的指定的公有構(gòu)造子對象。
getConstructors()
返回當(dāng)前 Class 對象表示的類的所有公有構(gòu)造子對象數(shù)組口注。
getDeclaredConstructor(Class[])
返回當(dāng)前 Class 對象表示的類的指定已說明的一個構(gòu)造子對象变擒。
getDeclaredConstructors()
返回當(dāng)前 Class 對象表示的類的所有已說明的構(gòu)造子對象數(shù)組。
getDeclaredField(String)
返回當(dāng)前 Class 對象表示的類或接口的指定已說明的一個域?qū)ο蟆?br> getDeclaredFields()
返回當(dāng)前 Class 對象表示的類或接口的所有已說明的域?qū)ο髷?shù)組寝志。
getDeclaredMethod(String, Class[])
返回當(dāng)前 Class 對象表示的類或接口的指定已說明的一個方法對象娇斑。
getDeclaredMethods()
返回 Class 對象表示的類或接口的所有已說明的方法數(shù)組。
獲取的是類自身聲明的所有方法材部,包含public毫缆、protected和private方法。
getField(String)
返回當(dāng)前 Class 對象表示的類或接口的指定的公有成員域?qū)ο蟆?br> getFields()
返回當(dāng)前 Class 對象表示的類或接口的所有可訪問的公有域?qū)ο髷?shù)組乐导。
getInterfaces()
返回當(dāng)前對象表示的類或接口實現(xiàn)的接口苦丁。
getMethod(String, Class[])
返回當(dāng)前 Class 對象表示的類或接口的指定的公有成員方法對象。
獲取的是類的所有共有方法物臂,這就包括自身的所有public方法旺拉,和從基類繼承的产上、從接口實現(xiàn)的所有public方法。
getMethods()
返回當(dāng)前 Class 對象表示的類或接口的所有公有成員方法對象數(shù)組蛾狗,包括已聲明的和從父類繼承的方法晋涣。
getModifiers()
返回該類或接口的 Java 語言修改器代碼。
getName()
返回 Class 對象表示的類型(類沉桌、接口谢鹊、數(shù)組或基類型)的完整路徑名字符串。
getResource(String)
按指定名查找資源留凭。
getResourceAsStream(String)
用給定名查找資源佃扼。
getSigners()
獲取類標(biāo)記。
getSuperclass()
如果此對象表示除 Object 外的任一類, 那么返回此對象的父類對象蔼夜。
isArray()
如果 Class 對象表示一個數(shù)組則返回 true, 否則返回 false兼耀。
isAssignableFrom(Class)
判定 Class 對象表示的類或接口是否同參數(shù)指定的 Class 表示的類或接口相同,或是其父類挎扰。
isInstance(Object)
此方法是 Java 語言 instanceof 操作的動態(tài)等價方法翠订。
isInterface()
判定指定的 Class 對象是否表示一個接口類型。
isPrimitive()
判定指定的 Class 對象是否表示一個 Java 的基類型遵倦。
newInstance()
創(chuàng)建類的新實例尽超。
toString()
將對象轉(zhuǎn)換為字符串。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梧躺,一起剝皮案震驚了整個濱河市似谁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掠哥,老刑警劉巖巩踏,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異续搀,居然都是意外死亡塞琼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門禁舷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彪杉,“玉大人,你說我怎么就攤上這事牵咙∨山” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵洁桌,是天一觀的道長渴丸。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么谱轨? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任戒幔,我火速辦了婚禮,結(jié)果婚禮上碟嘴,老公的妹妹穿的比我還像新娘溪食。我一直安慰自己囊卜,他們只是感情好娜扇,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栅组,像睡著了一般雀瓢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玉掸,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天刃麸,我揣著相機(jī)與錄音,去河邊找鬼司浪。 笑死泊业,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啊易。 我是一名探鬼主播吁伺,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼租谈!你這毒婦竟也來了篮奄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤槐臀,失蹤者是張志新(化名)和其女友劉穎荠列,沒想到半個月后软驰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡夸赫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了咖城。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茬腿。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖酒繁,靈堂內(nèi)的尸體忽然破棺而出滓彰,到底是詐尸還是另有隱情,我是刑警寧澤州袒,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布揭绑,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏他匪。R本人自食惡果不足惜菇存,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邦蜜。 院中可真熱鬧依鸥,春花似錦、人聲如沸悼沈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽絮供。三九已至衣吠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間壤靶,已是汗流浹背缚俏。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留贮乳,地道東北人忧换。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像向拆,于是被迫代替她去往敵國和親亚茬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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