Type Bounds in Scala PRO

When we define a function or a class and we choose to use generics we can set limits on the unknown type:
S <: T – means that S is a sub type of T S >: T – means that S is a super type of T
It is also possible to mix between a lower bound and an upper one:
S >: T1 <:T2 – S must be a super type for T1 and a sub type for T2.
The following code sample shows an example for setting limits, both an upper one and a lower one, on the unknown type.

object HelloSample
{
  def main(args:Array[String]):Unit =
  {
    val ob = getMyStack[SportCar](10)
  }
  def getMyStack[T >: RacingCar <: Car](num:Int) =
  {
    new MyStack[T](num)
  }
}

class MyStack[T](size:Int)
{
  //...
}

class Car

class SportCar extends Car

class RacingCar extends SportCar

The following video clip shows the execution of this code sample, overviews it and provides more in-depth understanding for this topic.

Share:

The Beauty of Code

Coding is Art! Developing Code That Works is Simple. Develop Code with Style is a Challenge!

Update cookies preferences