Wrap and unwrap a value with the same type parameter.

Generic Identity Wrapper

IdentityGeneric.scala
case class Identity[A](value: A)

object Main {
  def main(args: Array[String]): Unit = {
    val number = 
    val wrapped = Identity[Int](number)
    val kept = wrapped.value
    val label = "kept=" + kept

    println("number=" + number)
    println(label)
  }
}
case class Identity[A](value: A)

object Main {
  def main(args: Array[String]): Unit = {
    val number = 
    val wrapped = Identity[Int](number)
    val kept = wrapped.value
    val label = "kept=" + kept

    println("number=" + number)
    println(label)
  }
}
case class Identity[A](value: A)

object Main {
  def main(args: Array[String]): Unit = {
    val number = 
    val wrapped = Identity[Int](number)
    val kept = wrapped.value
    val label = "kept=" + kept

    println("number=" + number)
    println(label)
  }
}
type-parameter The `[A]` type parameter lets one definition work with many types. Here `Identity[A]` stores and returns a value without changing its type.