package Ġcom . ail len . shop mall . module . as yn work Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġan long long Ġon Ġ 2 0 1 8 / 5 / 3 1 . Ċ Ġ* ĠEmail ï¼ļ Ġ 9 4 0 7 5 2 9 4 4 @ qq . com Ċ Ġ*/ ĊĊ Ċ // å¼ĤæŃ¥ ä»»åĬ¡ çļĦ ç»ĵæŀľ å¤ĦçĲĨ ç±» ï¼Į åĮħæĭ¬ çĽĳåĲ¬ å¼ĤæŃ¥ ç»ĵæŀľ ï¼Į åĪĩæį¢ ç»ĵæŀľ æīĢåľ¨ çļĦ çº¿ç¨ĭ , æ³Ľ åŀĭ æĺ¯ è¿ĶåĽŀ åĢ¼çļĦ ç±»åŀĭ Ċ class ĠResult < R > Ġ{ ĊĠĠĠ Ġvar Ġm Result : ĠR ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġm Success : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġm Thread Handler : Thread Holder Ġ= ĠThread Holder . MAIN ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Thread Holder . ERROR Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġm Fail Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġm Listeners : Mutable List < As yn Result Listener < R >> Ġby Ġlazy Ġ{ Ġmutable ListOf < As yn Result Listener < R >>() Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Exception : ĠException ĊĊĠĠĠ Ġfun Ġadd As yn Result Listener ( listener : ĠAs yn Result Listener < R >) Ġ{ Ġm Listeners Ġ+= Ġlistener } ĊĊĠĠĠ Ġfun Ġremove As yn Result L is enter ( listener : ĠAs yn Result Listener < R >) Ġ{ m Listeners Ġ-= Ġlistener } ĊĊĠĠĠ Ġfun Ġset Success ( result : ĠR ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Success ) Ġreturn ĊĠĠĠĠĠĠĠ Ġm Result Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġm Success Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġnotify Result Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetError ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ++ m Fail Count ĊĠĠĠĠĠĠĠ Ġm Exception Ġ= Ġexception ĊĠĠĠĠĠĠĠ Ġm Success Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġnotify Result Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Result Listener () Ġ= Ġm Listeners . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġit . on Result ( this ) ĊĠĠĠ Ġ} Ċ }