package Ġru . rp ux a . super wire less adb . other Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . annotation . Call Super Ċ import Ġjava . io .* Ċ import Ġjava . lang . reflect . Field Ċ import Ġjava . lang . reflect . Modifier Ċ import Ġjava . util .* Ċ Ċ interface ĠString Serializable Ġ: ĠExternal izable Ġ{ ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġfun Ġsave ( context : ĠContext , Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class . get Constructor () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠError (" Empty Ġconstructor Ġnot Ġfound !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġcontext . get SharedPreferences ( name , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġto Serialize String () ĊĠĠĠĠĠĠĠ Ġprintln ( string . length ) ĊĠĠĠĠĠĠĠ Ġprintln ( string . hashCode ()) ĊĠĠĠĠĠĠĠ Ġeditor . putString ( SAVE _ FIELD _ NAME , Ġstring ) ĊĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġfun Ġto Serialize String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠByte . byte To Unsigned Int (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġint Ġ= Ġto Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( int Ġ< Ġ 0 ) Ġint Ġ+= Ġ 1 Ġshl ĠByte . SIZE _ BITS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġint ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbyte Stream Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġval Ġo os Ġ= ĠObject OutputStream ( byte Stream ) ĊĠĠĠĠĠĠĠ Ġo os . write Object ( this ) ĊĠĠĠĠĠĠĠ Ġo os . flush () ĊĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= Ġbyte Stream . toByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠbyteArray . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Ġ= ĠbyteArray [ i ]. byte To Unsigned Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( char . to Char ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġbuilder . toString () ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġstring ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġread External ( input : ĠObject Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġjava Class ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġinput . read Object () Ġas ĠMap < String , ĠAny ?> ĊĠĠĠĠĠĠĠ Ġval Ġclass Fields Ġ= Ġclazz . declared Fields ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( field Ġin Ġfields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclass Field Ġ= Ġclass Fields . find Ġ{ Ġit . fieldName Ġ== Ġfield . key Ġ} Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Field . set ( this , Ġfield . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġwrite External ( output : ĠObject Output ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġjava Class ĊĠĠĠĠĠĠĠ Ġval Ġclass Fields Ġ= Ġclazz . declared Fields ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= ĠHashMap < String , ĠAny ? >( class Fields . size ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( class Field Ġin Ġclass Fields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġclass Field . fieldName Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields [ name ] Ġ= Ġclass Field . get ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoutput . write Object ( fields ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠField . fieldName : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( decl aring Class . name Ġ!= Ġthis @ String Serializable . java Class . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= Ġmodifiers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Modifier . is Transient ( modifiers ) Ġ|| ĠModifier . is Static ( modifiers )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= Ġget Annotation ( Name :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġannotation ?. name Ġ?: Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target ( Annotation Target . FIELD ) ĊĠĠĠ Ġ@ Retention ( Annotation Retention . RUNTIME ) ĊĠĠĠ Ġannotation Ġclass ĠName ( val Ġname : ĠString ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSAVE _ FIELD _ NAME Ġ= Ġ" save fieldname " ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Serialize String ( string : ĠString ): ĠString Serializable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( string . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( string . hashCode ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠArrayList < Byte >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( char Ġin Ġstring ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte Ġ= Ġchar . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( byte Ġ! in Ġ 0 .. 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠError (" byte Ġ! in Ġ 0 .. 2 5 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuf . add ( byte . to Byte ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= Ġbuf . toByteArray () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo os Ġ= ĠObject InputStream ( ByteArray InputStream ( byteArray )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġo os . read Object () Ġas ĠString Serializable ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġload ( save Name : ĠString , Ġcontext : ĠContext ): ĠString Serializable ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġcontext . get SharedPreferences ( save Name , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Ġ= Ġpreferences . getString ( SAVE _ FIELD _ NAME , Ġnull ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfrom Serialize String ( string ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }