scala.jdk.package.scala Maven / Gradle / Ivy
/*
* Scala (https://www.scala-lang.org)
*
* Copyright EPFL and Lightbend, Inc.
*
* Licensed under Apache License 2.0
* (http://www.apache.org/licenses/LICENSE-2.0).
*
* See the NOTICE file distributed with this work for
* additional information regarding copyright ownership.
*/
package scala
/** The jdk package contains utilities to interact with JDK classes.
*
* This packages offers a number of converters, that are able to wrap or copy
* types from the scala library to equivalent types in the JDK class library
* and vice versa:
*
* - [[CollectionConverters]], converting collections like [[scala.collection.Seq]],
* [[scala.collection.Map]], [[scala.collection.Set]],
* [[scala.collection.mutable.Buffer]], [[scala.collection.Iterator]]
* and [[scala.collection.Iterable]] to their JDK counterparts
* - [[OptionConverters]], converting between [[Option]] and
* [[java.util.Optional]] and primitive variations
* - [[StreamConverters]], to create JDK Streams from scala collections
* - [[DurationConverters]], for conversions between scala
* [[scala.concurrent.duration.FiniteDuration]] and [[java.time.Duration]]
* - [[FunctionConverters]], from scala Functions to java
* [[java.util.function.Function]], [[java.util.function.UnaryOperator]],
* [[java.util.function.Consumer]] and [[java.util.function.Predicate]], as
* well as primitive variations and Bi-variations.
*
* By convention, converters that wrap an object to provide a different
* interface to the same underlying data structure use .asScala and .asJava
* extension methods, whereas converters that copy the underlying data structure
* use .toScala and .toJava.
*
* In the [[javaapi]] package, the same converters can be found with a
* java-friendly interface that don't rely on implicit enrichments.
*
* Additionally, this package offers [[Accumulator]]s, capable of efficiently
* traversing JDK Streams.
**/
package object jdk