Аргументы функции :Верхняя граница против родительского класса в качестве аргумента?

Учтите, что у нас есть:

abstract class FlyingObject;
case class Rocket(name: String) extends FlyingObject;

в чем разница между этими двумя объявлениями функций:

def launch[T <: FlyingObject](fo: T)

и

def launch(fo: FlyingObject)

Было бы здорово привести несколько примеров, когда какой тип объявления использовать...

[ОБНОВЛЕНИЕ]

Еще один замечательный пример и объяснение можно найти здесь . Это еще один пример того, когда вы должны использовать верхнюю границу вместо просто производного класса в качестве параметра.

5
задан PrimosK 23 April 2012 в 20:08
поделиться