Java中取的Class名稱的方法有三種: getName()、getCanonicalName()、getSimpleName()

 

getName()

     拿到的是虛擬機器中表示Class物件的名稱

 

getCanonicalName()

    拿到的是包含路徑的Class名稱

 

getSimpleName()

    拿到的就只是Class名稱,沒有包含路徑

 

先來看一段程式

class name.png

接著來看這段程式執行後,output的結果如下:

output1.png

從結果上看起來好像getName()和getCanonicalName()是一樣的

下面用一個inner class就可以比較看得出來兩者的區別

在TestClass中我新加了一個TestInnerClass,然後再分別使用三個getName方法將結果印出來

inner class.png

接著來看這段程式執行後,output的結果如下:

output2.png

從上面的結果可以明顯的區分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

arrow
arrow

    Mark Zhang 發表在 痞客邦 留言(0) 人氣()