data Ġclass ĠUser ( val Ġname : ĠString , Ġval Ġage : ĠInt ) Ċ Ċ public Ġclass ĠUser Ġ{ ĊĠĠĠ Ġprivate ĠString Ġname ; ĊĠĠĠ Ġprivate Ġint Ġage ; ĊĊĠĠĠ Ġpublic ĠUser () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġ""; ĊĠĠĠĠĠĠĠ Ġthis . age Ġ= Ġ 0 ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠUser ( String Ġname ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ; ĊĠĠĠĠĠĠĠ Ġthis . age Ġ= Ġ 0 ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠUser ( int Ġage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġ""; ĊĠĠĠĠĠĠĠ Ġthis . age Ġ= Ġage ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠUser ( String Ġname , Ġint Ġage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ; ĊĠĠĠĠĠĠĠ Ġthis . age Ġ= Ġage ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠString ĠgetName () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġint Ġget Age () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġage ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠString Ġcomponent 1 () Ġ{ Ġ// para Ġacesso Ġpos ic ional Ġe Ġde constr uÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġreturn Ġname ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġint Ġcomponent 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġage ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠUser Ġcopy () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠUser ( name , Ġage ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠUser Ġcopy ( String ĠnewName ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠUser ( new Name , Ġage ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠUser Ġcopy ( int Ġnew Age ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠUser ( name , Ġnew Age ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic ĠUser Ġcopy ( String ĠnewName , Ġint Ġnew Age ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ĠUser ( new Name , Ġnew Age ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġo ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġo ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠ Ġif Ġ( o Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġo . getClass ()) Ġreturn Ġfalse ; ĊĊĠĠĠĠĠĠĠ ĠUser Ġuser Ġ= Ġ( User ) Ġo ; ĊĊĠĠĠĠĠĠĠ Ġif Ġ( age Ġ!= Ġuser . age ) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠ Ġreturn Ġname Ġ!= Ġnull Ġ? Ġname . equals ( user . name ) Ġ: Ġuser . name Ġ== Ġnull ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic Ġint ĠhashCode () Ġ{ ĊĠĠĠĠĠĠĠ Ġint Ġresult Ġ= Ġname Ġ!= Ġnull Ġ? Ġname . hashCode () Ġ: Ġ 0 ; ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġage ; ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġpublic ĠString ĠtoString () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" User {" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ='" Ġ+ Ġname Ġ+ Ġ'\'' Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġage =" Ġ+ Ġage Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'}'; ĊĠĠĠ Ġ} Ċ } Ċ Ċ // https :// pt . stackoverflow . com / q / 2 2 8 4 2 2 / 1 0 1 Ċ