package Ġtry out . class and packag ename Ċ Ċ object ĠX xx Ġ{ ĊĠĠĠ Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠB ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġname Ġof Ġthe Ġpackage Ġof Ġ[ cls ], Ġprovided Ġthat Ġ[ cls ] Ġis Ġnot Ġin Ġthe Ġdefault Ġpackage . Ċ Ġ* Ġif Ġ[ cls ] Ġis Ġin Ġthe Ġdefault Ġpackage , Ġthen Ġreturns Ġthe Ġempty Ġstring . Ċ Ġ*/ Ċ fun ĠpackageName ( cls : ĠClass < *> ): ĠString Ġ{ ĊĠĠĠ Ġval Ġf qn Ġ= Ġcls . name ĊĠĠĠ Ġval Ġlast Dot Ġ= Ġf qn . lastIndexOf ('.') ĊĠĠĠ Ġreturn Ġif Ġ( last Dot Ġ== Ġ- 1 ) Ġ"" ĊĠĠĠ Ġelse Ġf qn . substring ( 0 , Ġlast Dot ) Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġname Ġof Ġthe Ġpackage Ġof Ġthe Ġclass Ġof Ġ[ obj ], Ġprovided Ġthat Ġthe Ġclass Ġis Ġnot Ġin Ġthe Ġdefault Ġpackage . Ċ Ġ* Ġif Ġthe Ġclass Ġis Ġin Ġthe Ġdefault Ġpackage , Ġthen Ġreturns Ġthe Ġempty Ġstring . Ċ Ġ*/ Ċ fun ĠpackageName ( obj : ĠAny ): ĠString Ġ= ĊĠĠĠĠĠĠĠ ĠpackageName ( obj . java Class ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġnames Ġof Ġthe Ġsub packages Ġin Ġthe Ġpackage Ġpath Ġof Ġ[ cls ]. Ċ Ġ* Ġif Ġ[ cls ] Ġis Ġin Ġthe Ġdefault Ġpackage , Ġthen Ġreturns Ġan Ġempty Ġlist . Ċ Ġ*/ Ċ fun ĠpackageName List ( cls : ĠClass < *> ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġpkg Name Ġ= ĠpackageName ( cls ) ĊĠĠĠ Ġreturn Ġif Ġ( pkg Name . isNotEmpty ()) Ġpkg Name . split ('.') ĊĠĠĠ Ġelse Ġempty List () Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġnames Ġof Ġthe Ġsub packages Ġin Ġthe Ġpackage Ġpath Ġof Ġthe Ġclass Ġof Ġ[ obj ]. Ċ Ġ* Ġif Ġthe Ġclass Ġis Ġin Ġthe Ġdefault Ġpackage , Ġthen Ġreturns Ġan Ġempty Ġlist . Ċ Ġ*/ Ċ fun ĠpackageName List ( obj : ĠAny ): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ ĠpackageName List ( obj . java Class ) Ċ Ċ fun Ġmain () Ġ{ ĊĊĠĠĠ Ġprintln (" *** ĠX Ġ*** ") ĊĠĠĠ Ġprintln ( X xx :: class . simple Name ) ĊĠĠĠ Ġprintln ( X xx :: class . qualified Name ) ĊĠĠĠ Ġprintln ( X xx :: class . java . name ) ĊĠĠĠ Ġprintln ( X xx . java Class . name ) ĊĠĠĠ Ġprintln ( packageName ( X xx :: class . java )) ĊĠĠĠ Ġprintln ( packageName ( X xx )) ĊĠĠĠ Ġprintln ( packageName List ( X xx :: class . java )) ĊĠĠĠ Ġprintln ( packageName List ( X xx )) ĊĠĠĠ Ġprintln () ĊĊĠĠĠ Ġprintln (" *** Ġobj Ġ*** ") ĊĠĠĠ Ġval Ġobj Ġ= ĠX xx . A . B () ĊĠĠĠ Ġprintln ( obj :: class . simple Name ) ĊĠĠĠ Ġprintln ( obj :: class . qualified Name ) ĊĠĠĠ Ġprintln ( obj :: class . java . name ) ĊĠĠĠ Ġprintln ( obj . java Class . name ) ĊĠĠĠ Ġprintln ( packageName ( obj :: class . java )) ĊĠĠĠ Ġprintln ( packageName ( obj )) ĊĠĠĠ Ġprintln ( packageName List ( obj :: class . java )) ĊĠĠĠ Ġprintln ( packageName List ( obj )) ĊĠĠĠ Ġprintln () ĊĊĠĠĠ Ġprintln (" *** Ġfoo Ġ*** ") ĊĠĠĠ Ġval Ġfoo Ġ= Ġobject Ġ{} ĊĠĠĠ Ġprintln ( foo :: class . simple Name ) ĊĠĠĠ Ġprintln ( foo :: class . qualified Name ) ĊĠĠĠ Ġprintln ( foo :: class . java . name ) ĊĠĠĠ Ġprintln ( foo . java Class . name ) ĊĠĠĠ Ġprintln ( packageName ( foo :: class . java )) ĊĠĠĠ Ġprintln ( packageName ( foo )) ĊĠĠĠ Ġprintln ( packageName List ( foo :: class . java )) ĊĠĠĠ Ġprintln ( packageName List ( foo )) Ċ } Ċ