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 Visitor Design Pattern

The Visitor Design Pattern

The visitor design pattern allows us to add operations to objects that already exist without modifying their classes and without extending them.

The Beauty of Code

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

Update cookies preferences