/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠRichard ĠH aus wal d Ġ- Ġhttps :// quantum maid . de /. Ċ Ġ* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ċ Ġ* Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ċ Ġ* Ġwith Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ċ Ġ* Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ċ Ġ* Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY Ċ Ġ* ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ċ Ġ* Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġde . quantum maid . reflect maid . gra al vm test image Ċ Ċ import Ġde . quantum maid . reflect maid . Proxy Factory Ċ import Ġde . quantum maid . reflect maid . Reflect M aid Ċ import Ġde . quantum maid . reflect maid . create Dynamic Proxy Factory Ċ import Ġde . quantum maid . reflect maid . gra al vm . register To G ra al Vm Ċ Ċ data Ġclass ĠMy Dto ( val Ġfield 0 : ĠString , Ġval Ġfield 1 : ĠString , Ġval Ġfield 2 : ĠString ) Ċ Ċ fun Ġinterface ĠMy Interface Ġ{ ĊĠĠĠ Ġfun Ġdo Something () Ċ } Ċ Ċ fun Ġcreate Proxy Factory And RegisterType (): ĠProxy Factory < My Interface > Ġ{ ĊĠĠĠ Ġval Ġreflect M aid Ġ= ĠReflect M aid . a Reflect M aid () ĊĠĠĠ Ġreflect M aid . register To G ra al Vm () ĊĠĠĠ Ġval Ġresolved Type Ġ= Ġreflect M aid . resolve < My Dto >() ĊĠĠĠ Ġresolved Type . methods () ĊĠĠĠ Ġresolved Type . construct ors () ĊĠĠĠ Ġresolved Type . fields () ĊĠĠĠ Ġreturn Ġreflect M aid . create Dynamic Proxy Factory () Ċ } Ċ Ċ val ĠPRO XY _ FACTORY Ġ= Ġcreate Proxy Factory And RegisterType () Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġmy Interface Ġ= ĠPRO XY _ FACTORY . create Proxy Ġ{ Ġ_, Ġ_ Ġ-> Ġprintln (" proxy Ġworks ") Ġ} ĊĠĠĠ Ġmy Interface . do Something () ĊĊĠĠĠ Ġval Ġother Reflect M aid Ġ= ĠReflect M aid . a Reflect M aid () ĊĠĠĠ Ġval Ġresolved Type Ġ= Ġother Reflect M aid . resolve < My Dto >() ĊĠĠĠ Ġprintln (" fields : Ġ${ resolved Type . fields (). size }") ĊĠĠĠ Ġprintln (" methods : Ġ${ resolved Type . methods (). size }") ĊĠĠĠ Ġprintln (" construct ors : Ġ${ resolved Type . construct ors (). size }") Ċ }