The main usage for Nothing is when specifying the return type for methods which never return normally (e.g. throw an exception when been called).
object Sample { def main(args:Array[String]):Unit = { val ob = getMyStack[Int](10) } def getMyStack[T](num:Int) = { new EmptyMyStack[T] } } abstract class MyStack[T](size:Int) { def data:T; } class EmptyMyStack[T] extends MyStack[T](0) { def data:Nothing = throw new Exception("empty stack"); }
The following video clip overviews this code sample, shows its execution and explains one of the main common cases in which we will use the Nothing type.