title: Confused with usage of type parameter used in scala
body: <p>I have following simple code:</p>
  
  <pre><code>trait MyBox[T] {
    def capacity: Double
  }
  
  case class FruitBox[T](fruit: Int) extends MyBox[T] {
    override def capacity = 1.0
  }
  
  
  object FruitBox {
    def apply[T](fruit: Int): FruitBox[T] = new FruitBox[T](fruit)
  }
  </code></pre>
  
  <p>The following code is also valid that I omit the type parameter <code>T</code> </p>
  
  <pre><code>case class FruitBox[T](fruit: Int) extends MyBox { //T is omitted for MyBox[T]
    override def capacity = 1.0
  }
  
  
  object FruitBox{
    def apply[T](fruit: Int): FruitBox[T] = new FruitBox(fruit) //T is omitted for new FruitBox
  }
  </code></pre>
  
  <p>I would ask why I could omit the type parameter? What is the reason behind this?It looks to me that in scala，parameterized type must have type parameter to be a concrete type.</p>