package Ġdev . ent ao . ke b . page . tag Ċ Ċ import Ġdev . ent ao . k ava . base . is Type Boolean Ċ import Ġdev . ent ao . k ava . base . is Type Int Ċ import Ġdev . ent ao . k ava . base . is TypeString Ċ import Ġdev . ent ao . k ava . base . userName Ċ import Ġjava . util . HashMap Ċ import Ġkotlin . reflect . K Property ĊĊ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠTag Map Ġ: ĠHashMap < String , ĠString >( 1 6 ) Ġ{ ĊĊĊ ĉ operator Ġfun Ġ< T > ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ Ċĉ ĉ val Ġk Ġ= Ġproperty . userName Ċĉ ĉ when Ġ( value ) Ġ{ Ċĉĉ ĉ is ĠString Ġ-> Ġput ( k , Ġvalue ) Ċĉĉ ĉ is ĠBoolean Ġ-> Ġ{ Ċĉĉĉ ĉ if Ġ( value ) Ġ{ Ċĉĉĉĉ ĉ put ( k , Ġk ) Ċĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉ ĉ remove ( k ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉĉ ĉ else Ġ-> Ġput ( k , Ġvalue . toString ()) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ operator Ġfun Ġ< T > ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT Ġ{ Ċĉ ĉ val Ġpname Ġ= Ġproperty . userName Ċĉ ĉ val Ġrt Ġ= Ġproperty . returnType Ċĉ ĉ val Ġv Ġ= Ġthis [ pname ] Ġ?: Ġ"" Ċĉ ĉ if Ġ( rt . is TypeString ) Ġ{ Ċĉĉ ĉ return Ġv Ġas ĠT Ċĉ ĉ } Ċĉ ĉ if Ġ( rt . is Type Boolean ) Ġ{ Ċĉĉ ĉ return Ġ( v Ġ== Ġpname ) Ġas ĠT Ċĉ ĉ } Ċĉ ĉ if Ġ( rt . is Type Int ) Ġ{ Ċĉĉ ĉ if Ġ( v . isEmpty ()) Ġ{ Ċĉĉĉ ĉ return Ġ 0 Ġas ĠT Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ return Ġv . toInt () Ġas ĠT Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ throw ĠIllegalArgumentException (" ä¸į æĶ¯æĮģ çļĦ ç±»åŀĭ $ property ") Ċ ĉ } Ċ Ċ } ĊĊĊ