高级 | Java中获取类名的3种方法
生活随笔
收集整理的這篇文章主要介紹了
高级 | Java中获取类名的3种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載自?高級 | Java中獲取類名的3種方法
獲取類名的方法
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 ? ? ?TestClassgetName ? ? ? ? ? ?com.test.TestClass$TestInnerClass getCanonicalName ? com.test.TestClass.TestInnerClass getSimpleName ? ? ?TestInnerClassgetName ? ? ? ? ? ?[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() 在獲取普通類和內部類名的時候沒區別,在獲取數組類的時候有區別。
總結
以上是生活随笔為你收集整理的高级 | Java中获取类名的3种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为发布5G-A全系列解决方案,将5G-
- 下一篇: 到底什么是跨域?附解决方案