Skip to content

Instantly share code, notes, and snippets.

@benhardy
Last active March 28, 2016 18:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save benhardy/95a170b7a51d72699832 to your computer and use it in GitHub Desktop.
Save benhardy/95a170b7a51d72699832 to your computer and use it in GitHub Desktop.
// fully qualified Java clases deliberately, so it screams THIS IS FOR JAVA
// please excuse ASCII art for readability of very similar functions
implicit def toJavaConsumer[T] (con: T=>Unit) = new java.util.function.Consumer[T] { def accept(t:T) = con(t) }
implicit def toJavaBiConsumer[A,B] (con: (A,B)=>_) = new java.util.function.BiConsumer[A,B] { def accept(a:A,b:B) = con(a,b) }
implicit def toJavaSupplier[T] (sup: Unit=>T) = new java.util.function.Supplier[T] { def get(): T = sup() }
implicit def toJavaFunction[T,R] (fun: T=>R) = new java.util.function.Function[T,R] { def apply(t:T) = fun(t) }
implicit def toJavaBiFunction[T,U,R] (fun: (T,U)=>R) = new java.util.function.BiFunction[T,U,R] { def apply(t:T, u:U) = fun(t, u) }
implicit def consumerToScala[T] (con: java.util.function.Consumer[T]): T=>Unit = con.accept
implicit def biconsumerToScala[A,B](fun: java.util.function.BiConsumer[A,B]): (A,B)=>Unit = fun.accept
implicit def supplierToScala[T] (sup: java.util.function.Supplier[T]): Unit=>T = sup.get
implicit def func1ToScala[T,R] (fun: java.util.function.Function[T,R]): T=>R = fun
implicit def func2ToScala[T,U,R] (fun: java.util.function.BiFunction[T,U,R]): (T,U)=>R = fun
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment