java獲取類名的方法詳解
如果我們要獲取當前運行的類名,怎么來獲取?
在Class類中,有如下一個方法:

比如現在有一個類Demo7.java
package pxx.test1;
public class Demo7 {
public static void main(String[] args) {
Demo7 demo7 = new Demo7();
System.out.println(demo7.getClass().getName());
}
}運行結果:

上面就是直接這個對象調用了getClass()得到了Class對象,然后調用getName()得到運行類名。
那么假如一個類繼承了一個類,又怎么獲取當前類名還有父類名呢
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調用了一個getClass()方法,然后又來獲取類名,這里需要注意的是super只能調用父類的非靜態(tài)方法,并且不能在static方法中調用,因為super與this一樣,是基于對象操作的。說回來,這里調用父類的getClass(),因此想來得到父類的類名,好了,運行一下

還是拿不到父類的類名 ,那我們去看一下這個geClass()方法,這個方法在Object對象里面

原來這個方法是一個final,也就是說,這個方法被其他類繼承可以,但是不能被重寫,因此,this.getClass與super.getClass最終調用的都是Object類中的getClass方法,而這個方法的定義是返回Object的運行時類,所以,上面會返回自己的類名而不是父類名。
那么怎么獲取父類的名字呢?
我們去到Class類里面去看一下,發(fā)現有下面這個方法:

上面這個意思也就是說,會返回這個當前調用類的父類,拿到父類之后我們依然可以用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();
}
}運行結果:

這樣就拿到了父類的類名
到此這篇關于java獲取類名的問題詳解的文章就介紹到這了,更多相關java獲取類名內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringCloud及Nacos服務注冊IP選擇問題解決方法
這篇文章主要介紹了SpringCloud及Nacos服務注冊IP選擇問題,為什么注冊的IP和真實IP不符合呢,原因是Nacos客戶端在注冊服務時會從機器網卡中選擇一個IP來注冊,所以,當注冊了的是非真實IP后,另一臺機器調用時是不可能調通的,知道問題原因就是解決方法,一起看看吧2024-01-01
SpringBoot無法訪問/static下靜態(tài)資源的解決
這篇文章主要介紹了SpringBoot無法訪問/static下靜態(tài)資源的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

