這篇“java怎么獲取類名”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java怎么獲取類名”文章吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機(jī)域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、萬全網(wǎng)站維護(hù)、網(wǎng)站推廣。
如果我們要獲取當(dāng)前運行的類名,怎么來獲?。?/p>
在Class類中,有如下一個方法:
比如現(xiàn)在有一個類Demo7.java
package pxx.test1; public class Demo7 { public static void main(String[] args) { Demo7 demo7 = new Demo7(); System.out.println(demo7.getClass().getName()); } }
運行結(jié)果:
上面就是直接這個對象調(diào)用了getClass()得到了Class對象,然后調(diào)用getName()得到運行類名。
那么假如一個類繼承了一個類,又怎么獲取當(dāng)前類名還有父類名呢
Demo8.java
package pxx.test1; public class Demo8 { int num; String name; public Demo8(){}; }
Demo9.java
package pxx.test1; public class Demo9 extends Demo8 { public void test() { System.out.println(super.getClass().getName()); } public static void main(String[] args) { new Demo9().test(); } }
上面我們就用super調(diào)用了一個getClass()方法,然后又來獲取類名,這里需要注意的是super只能調(diào)用父類的非靜態(tài)方法,并且不能在static方法中調(diào)用,因為super與this一樣,是基于對象操作的。說回來,這里調(diào)用父類的getClass(),因此想來得到父類的類名,好了,運行一下
還是拿不到父類的類名 ,那我們?nèi)タ匆幌逻@個geClass()方法,這個方法在Object對象里面
原來這個方法是一個final,也就是說,這個方法被其他類繼承可以,但是不能被重寫,因此,this.getClass與super.getClass最終調(diào)用的都是Object類中的getClass方法,而這個方法的定義是返回Object的運行時類,所以,上面會返回自己的類名而不是父類名。
那么怎么獲取父類的名字呢?
我們?nèi)サ紺lass類里面去看一下,發(fā)現(xiàn)有下面這個方法:
上面這個意思也就是說,會返回這個當(dāng)前調(diào)用類的父類,拿到父類之后我們依然可以用getName()來獲取名字,上代碼
package pxx.test1; public class Demo9 extends Demo8 { public void test() { System.out.println(super.getClass().getSuperclass().getName()); } public static void main(String[] args) { new Demo9().test(); } }
運行結(jié)果:
這樣就拿到了父類的類名
以上就是關(guān)于“java怎么獲取類名”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。