package Ġcom . github . snow dream . toy br icks Ċ Ċ import Ġcom . github . snow dream . toy br icks . annotation . Interface Loader Ċ import Ġcom . github . snow dream . toy br icks . annotation . impl . Default Interface Loader Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġsnow dream Ġon Ġ 1 7 / 2 / 1 0 . Ċ Ġ*/ Ċ class ĠTo y Br icks Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Default ĠInterface Loader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġvar Ġs Default Interface Loader : ĠInterface Loader Ġ= ĠDefault Interface Loader () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// New I ĠInterface Loader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġvar Ġs New Interface Loader : ĠInterface Loader Ġ?= Ġs Default Interface Loader . get Implementation ( Interface Loader :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġ@ Synchron ized Ġfun Ġ< T > Ġget Implementation ( clazz : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimplementation : ĠT ? ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ= Ġs New Interface Loader ?. get Implementation ( clazz ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( implementation Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ= Ġs Default Interface Loader . get Implementation ( clazz ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġimplementation !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ }