摘要:獲取類名的方法中獲取類名的方式主要有以下三種。返回的是更容易理解的類名表示。返回的是類的簡稱。之后代表類描述符,最后表示類名結束。在獲取普通類和內部類名的時候沒區別,在獲取數組類的時候有區別。
獲取類名的方法
Java 中獲取類名的方式主要有以下三種。
getName()
返回的是虛擬機里面的class的類名表現形式。
getCanonicalName()
返回的是更容易理解的類名表示。
getSimpleName()
返回的是類的簡稱。
都有什么區別?通過一個實例來看下它們主要的區別。
public class TestClass { public static void main(String[] args) { // 外部普通類 System.out.println("方法名 類名"); System.out.println("getName " + TestClass.class.getName()); System.out.println("getCanonicalName " + TestClass.class.getCanonicalName()); System.out.println("getSimpleName " + TestClass.class.getSimpleName()); System.out.println(); // 內部類 System.out.println("getName " + TestInnerClass.class.getName()); System.out.println("getCanonicalName " + TestInnerClass.class.getCanonicalName()); System.out.println("getSimpleName " + TestInnerClass.class.getSimpleName()); System.out.println(); // 數組類 TestInnerClass[] testInnerClasses = new TestInnerClass[]{ new TestInnerClass(), new TestInnerClass(), new TestInnerClass() }; System.out.println("getName " + testInnerClasses.getClass().getName()); System.out.println("getCanonicalName " + testInnerClasses.getClass().getCanonicalName()); System.out.println("getSimpleName " + testInnerClasses.getClass().getSimpleName()); System.out.println(); } static class TestInnerClass { } }
程序輸出以下結果。
方法名 類名 getName com.test.TestClass getCanonicalName com.test.TestClass getSimpleName TestClass getName com.test.TestClass$TestInnerClass getCanonicalName com.test.TestClass.TestInnerClass getSimpleName TestInnerClass getName [Lcom.test.TestClass$TestInnerClass; getCanonicalName com.test.TestClass.TestInnerClass[] getSimpleName TestInnerClass[]
[Lcom.test.TestClass$TestInnerClass;值得說明一下。
這是一種對函數返回值和參數的編碼,叫做JNI字段描述符(JavaNative Interface FieldDescriptors)。
[ 表示數組,一個代表一維數組,比如 [[ 代表二維數組。之后 L 代表類描述符,最后;表示類名結束。
結論1、從以上結果可以看出 getName() 和 getCanonicalName() 在獲取普通類名的時候沒有區別,在獲取內部類和數組類有區別的。
2、getSimpleName() 在獲取普通類和內部類名的時候沒區別,在獲取數組類的時候有區別。
推薦:Spring Boot & Cloud 最強技術教程
掃描關注我們的微信公眾號,干貨每天更新。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71264.html
摘要:反射學習的靈魂我們從最初的,到面向對象部分,我們可以將代碼在計算機中經歷的階段分為三部分源代碼階段類對象階段運行時階段而我們知道,中一個類在源代碼階段,是存儲在硬盤中的,而編譯后,就已經被加載到內存中區,那么有沒有一種方法可以在這種情況下 反射:Web學習的靈魂 我們從最初的 javac -HelloWorld.java,到面向對象部分,我們可以將Java代碼在計算機中經歷的階段分為三...
摘要:簡單說反射技術可以對一個類進行解剖。反射的基本步驟獲得對象,就是獲取到指定的名稱的字節碼文件對象。所以一般情況下,被反射的類,內部通常都會提供一個公有的空參數的構造函數。 定義 其實就是動態加載一個指定的類,并獲取該類中的所有的內容。 而且將字節碼文件封裝成對象,并將字節碼文件中的內容都封裝成對象,這樣便于操作這些成員。 簡單說:反射技術可以對一個類進行解剖。 反射的好處: 大大的增強...
摘要:實際上方法引用是表達式的一種語法糖。小結本篇全面介紹了方法引用的四種使用方式,且每種方式都有對應一個示例來幫助大家理解。 上一篇我們詳細介紹了Optional類用來避免空指針問題,本篇我們全面了解一下Java8中的方法引用特性。方法引用是lambda表達式的一種特殊形式,如果正好有某個方法滿足一個lambda表達式的形式,那就可以將這個lambda表達式用方法引用的方式表示,但是如果這...
摘要:是完全面向對象的語言,對象具有狀態行為和標識。類一一是具有共同特征和行為的一類事物的統稱。受保護的,對同一包內的類和所有子類可見。一種通用的內存池,用于存放所有對象。類級變量又稱全局級變量或靜態變量,需要使用關鍵字修飾。 java語言的基本特點 java語言是面向對象的高級程序設計語言,它是編譯型的語言,Java語言不使用指針,并提供了自動的垃圾回收機制,使得程序員不必為內存管理而擔...
閱讀 2993·2021-10-13 09:39
閱讀 2694·2021-09-27 13:34
閱讀 2031·2019-08-30 15:55
閱讀 3260·2019-08-30 15:43
閱讀 3631·2019-08-30 11:16
閱讀 1748·2019-08-26 18:28
閱讀 1284·2019-08-26 13:56
閱讀 915·2019-08-26 13:35