@ Retention ( Annotation Retention . RUNTIME ) Ċ Ġannotation Ġclass ĠAnn ( Ċ Ġval Ġb : ĠByte , Ċ Ġval Ġs : ĠShort , Ċ Ġval Ġi : ĠInt , Ċ Ġval Ġf : ĠFloat , Ċ Ġval Ġd : ĠDouble , Ċ Ġval Ġl : ĠLong , Ċ Ġval Ġc : ĠChar , Ċ Ġval Ġbool : ĠBoolean Ċ ) Ċ fun Ġbox (): ĠString Ġ{ Ċ val Ġann Ġ= ĠMy Class :: class . java . getAnnotation (( Ann )? :: class . Ann ) Ċ if Ġ( ann Ġ== Ġnull ) Ġ{ Ċ return Ġ" fail : Ġcannot Ġfind ĠAnn Ġon ĠMy Class }" Ċ } Ċ if Ġ( ann . b Ġ!= Ġ 1 . to Byte ()) Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġb Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . b }" Ċ } Ċ if Ġ( ann . s Ġ!= Ġ 1 . to Short ()) Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġs Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . s }" Ċ } Ċ if Ġ( ann . i Ġ!= Ġ 1 ) Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġi Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . i }" Ċ } Ċ if Ġ( ann . f Ġ!= Ġ 1 . toFloat ()) Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġf Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . f }" Ċ } Ċ if Ġ( ann . d Ġ!= Ġ 1 . 0 ) Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġd Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . d }" Ċ } Ċ if Ġ( ann . l Ġ!= Ġ 1 . to Long ()) Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġl Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . l }" Ċ } Ċ if Ġ( ann . c Ġ!= Ġ' c ') Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġc Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . c }" Ċ } Ċ if Ġ((! Ġann . bool )) Ġ{ Ċ return Ġ" fail : Ġannotation Ġparameter Ġbool Ġshould Ġbe Ġ 1 , Ġbut Ġwas Ġ${ ann . bool }" Ċ } Ċ return Ġ" OK " Ċ } Ċ @ Ann ( 1 , 1 , 1 , 1 . 0 . toFloat (), 1 . 0 , 1 ,' c ', true ) Ġclass ĠMy Class