// ĠTARGET _ BACKEND : ĠJVM Ċ // ĠJVM _ TARGET : Ġ 1 . 8 Ċ // ĠSAM _ CONVERSION S : ĠIN DY Ċ // ĠFULL _ JDK Ċ Ċ // ĠCHECK _ BYTE CODE _ TEXT Ċ // ĠJVM _ IR _ TEMP LAT ES Ċ // Ġ 3 Ġjava / lang / invoke / Lambda Met af actory Ċ Ċ // ĠFILE : Ġserial izable Bound Interface Member Fun Ref . kt Ċ import Ġjava . io .* Ċ Ċ interface ĠPlus Ġ{ ĊĠĠĠ Ġfun Ġplus ( ss : ĠString ): ĠString Ċ } Ċ Ċ class ĠC ( val Ġs : ĠString ) Ġ: ĠPlus , ĠSerializable Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġplus ( ss : ĠString ) Ġ= Ġss Ġ+ Ġs Ċ } Ċ Ċ class ĠK Ġ: ĠPlus , ĠSerializable Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġplus ( ss : ĠString ) Ġ= Ġss Ġ+ Ġ" K " Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġval Ġp 1 : ĠPlus Ġ= ĠC (" K ") ĊĠĠĠ Ġval Ġt 1 Ġ= Ġround trip ( Sam ( p 1 :: plus )). get (" O ") ĊĠĠĠ Ġif Ġ( t 1 Ġ!= Ġ" OK ") Ġreturn Ġ" Failed : Ġt 1 ='$ t 1 '" ĊĊĠĠĠ Ġval Ġp 2 : ĠPlus Ġ= ĠK () ĊĠĠĠ Ġval Ġt 2 Ġ= Ġround trip ( Sam ( p 2 :: plus )). get (" O ") ĊĠĠĠ Ġif Ġ( t 2 Ġ!= Ġ" OK ") Ġreturn Ġ" Failed : Ġt 2 ='$ t 2 '" ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ } Ċ Ċ fun Ġ< T > Ġround trip ( x : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġval Ġout 1 Ġ= ĠByteArrayOutputStream () ĊĠĠĠ ĠObject OutputStream ( out 1 ). write Object ( x ) ĊĠĠĠ Ġreturn ĠObject InputStream ( ByteArray InputStream ( out 1 . toByteArray ())). read Object () Ġas ĠT Ċ } Ċ Ċ // ĠFILE : ĠSam . java Ċ import Ġjava . io .*; Ċ Ċ public Ġinterface ĠSam Ġextends ĠSerializable Ġ{ ĊĠĠĠ ĠString Ġget ( String Ġs ); Ċ } Ċ