java獲取類名的方法詳解
如果我們要獲取當(dāng)前運(yùn)行的類名,怎么來獲???
在Class類中,有如下一個(gè)方法:
比如現(xiàn)在有一個(gè)類Demo7.java
package pxx.test1; public class Demo7 { public static void main(String[] args) { Demo7 demo7 = new Demo7(); System.out.println(demo7.getClass().getName()); } }
運(yùn)行結(jié)果:
上面就是直接這個(gè)對象調(diào)用了getClass()得到了Class對象,然后調(diào)用getName()得到運(yùn)行類名。
那么假如一個(gè)類繼承了一個(gè)類,又怎么獲取當(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)用了一個(gè)getClass()方法,然后又來獲取類名,這里需要注意的是super只能調(diào)用父類的非靜態(tài)方法,并且不能在static方法中調(diào)用,因?yàn)閟uper與this一樣,是基于對象操作的。說回來,這里調(diào)用父類的getClass(),因此想來得到父類的類名,好了,運(yùn)行一下
還是拿不到父類的類名 ,那我們?nèi)タ匆幌逻@個(gè)geClass()方法,這個(gè)方法在Object對象里面
原來這個(gè)方法是一個(gè)final,也就是說,這個(gè)方法被其他類繼承可以,但是不能被重寫,因此,this.getClass與super.getClass最終調(diào)用的都是Object類中的getClass方法,而這個(gè)方法的定義是返回Object的運(yùn)行時(shí)類,所以,上面會(huì)返回自己的類名而不是父類名。
那么怎么獲取父類的名字呢?
我們?nèi)サ紺lass類里面去看一下,發(fā)現(xiàn)有下面這個(gè)方法:
上面這個(gè)意思也就是說,會(huì)返回這個(gè)當(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(); } }
運(yùn)行結(jié)果:
這樣就拿到了父類的類名
到此這篇關(guān)于java獲取類名的問題詳解的文章就介紹到這了,更多相關(guān)java獲取類名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之加權(quán)無向圖的設(shè)計(jì)實(shí)現(xiàn)
加權(quán)無向圖是一種為每條邊關(guān)聯(lián)一個(gè)權(quán)重值或是成本的圖模型。這種圖能夠自然地表示許多應(yīng)用。這篇文章主要介紹了加權(quán)無向圖的設(shè)計(jì)與實(shí)現(xiàn),感興趣的可以了解一下2022-11-11關(guān)于JWT與cookie和token的區(qū)別說明
這篇文章主要介紹了JWT與cookie和token的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10mybatis如何使用Criteria的and和or進(jìn)行聯(lián)合查詢
這篇文章主要介紹了mybatis如何使用Criteria的and和or進(jìn)行聯(lián)合查詢,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Mybatis-Plus實(shí)體類注解方法與mapper層和service層的CRUD方法
CRUD是指在做計(jì)算處理時(shí)的增加(Create)、讀取查詢(Retrieve)、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡寫。主要被用在描述軟件系統(tǒng)中DataBase或者持久層的基本操作功能,下面讓我們一起看看吧2022-03-03