Java中取的Class名稱的方法有三種: getName()、getCanonicalName()、getSimpleName()
getName()
拿到的是虛擬機器中表示Class物件的名稱
getCanonicalName()
拿到的是包含路徑的Class名稱
getSimpleName()
拿到的就只是Class名稱,沒有包含路徑
先來看一段程式
接著來看這段程式執行後,output的結果如下:
從結果上看起來好像getName()和getCanonicalName()是一樣的
下面用一個inner class就可以比較看得出來兩者的區別
在TestClass中我新加了一個TestInnerClass,然後再分別使用三個getName方法將結果印出來
接著來看這段程式執行後,output的結果如下:
從上面的結果可以明顯的區分getName()和getCanonicalName()有所不同
getCanonicalName()就是一般的class name在加上package路徑
而getName()的則是使用JNI(Java Native Interface)的方式表示
InnerClass是使用$符號來當作連接
知道三種取的Class Name的方式後,就可以依照自己的需求選擇要使用哪一種了
Ref:
[1] https://segmentfault.com/a/1190000015349501
[2] https://www.itread01.com/content/1541743570.html
留言列表