java獲取類名的方法詳解
如果我們要獲取當(dāng)前運(yùn)行的類名,怎么來(lái)獲???
在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è)對(duì)象調(diào)用了getClass()得到了Class對(duì)象,然后調(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()方法,然后又來(lái)獲取類名,這里需要注意的是super只能調(diào)用父類的非靜態(tài)方法,并且不能在static方法中調(diào)用,因?yàn)閟uper與this一樣,是基于對(duì)象操作的。說(shuō)回來(lái),這里調(diào)用父類的getClass(),因此想來(lái)得到父類的類名,好了,運(yùn)行一下

還是拿不到父類的類名 ,那我們?nèi)タ匆幌逻@個(gè)geClass()方法,這個(gè)方法在Object對(duì)象里面

原來(lái)這個(gè)方法是一個(gè)final,也就是說(shuō),這個(gè)方法被其他類繼承可以,但是不能被重寫,因此,this.getClass與super.getClass最終調(diào)用的都是Object類中的getClass方法,而這個(gè)方法的定義是返回Object的運(yùn)行時(shí)類,所以,上面會(huì)返回自己的類名而不是父類名。
那么怎么獲取父類的名字呢?
我們?nèi)サ紺lass類里面去看一下,發(fā)現(xiàn)有下面這個(gè)方法:

上面這個(gè)意思也就是說(shuō),會(huì)返回這個(gè)當(dāng)前調(diào)用類的父類,拿到父類之后我們依然可以用getName()來(lái)獲取名字,上代碼
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獲取類名的問(wèn)題詳解的文章就介紹到這了,更多相關(guān)java獲取類名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問(wèn)題解決方法
這篇文章主要介紹了SpringCloud及Nacos服務(wù)注冊(cè)IP選擇問(wèn)題,為什么注冊(cè)的IP和真實(shí)IP不符合呢,原因是Nacos客戶端在注冊(cè)服務(wù)時(shí)會(huì)從機(jī)器網(wǎng)卡中選擇一個(gè)IP來(lái)注冊(cè),所以,當(dāng)注冊(cè)了的是非真實(shí)IP后,另一臺(tái)機(jī)器調(diào)用時(shí)是不可能調(diào)通的,知道問(wèn)題原因就是解決方法,一起看看吧2024-01-01
SpringBoot優(yōu)化接口響應(yīng)時(shí)間的九個(gè)技巧
在實(shí)際開發(fā)中,提升接口響應(yīng)速度是一件挺重要的事,特別是在面臨大量用戶請(qǐng)求的時(shí)候,本文為大家整理了9個(gè)SpringBoot優(yōu)化接口響應(yīng)時(shí)間的技巧,希望對(duì)大家有所幫助2024-01-01
高可用架構(gòu)etcd選主故障主備秒級(jí)切換實(shí)現(xiàn)
這篇文章主要為大家介紹了高可用架構(gòu)etcd選主故障主備秒級(jí)切換的實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-02-02
SpringBoot無(wú)法訪問(wèn)/static下靜態(tài)資源的解決
這篇文章主要介紹了SpringBoot無(wú)法訪問(wèn)/static下靜態(tài)資源的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
sin(x)如何求解的java代碼實(shí)現(xiàn)方法
這篇文章主要為大家介紹了sin(x)如何求解的java代碼實(shí)現(xiàn)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

