title: Iteration over a sealed trait in Scala?
body: <p>I just wanted to know if it is possible to iterate over a sealed trait in Scala?
  If not, why is it not possible? Since the trait is sealed it should be possible no?</p>
  
  <p>What I want to do is something like that:</p>
  
  <pre><code>sealed trait ResizedImageKey {
  
    /**
     * Get the dimensions to use on the resized image associated with this key
     */
    def getDimension(originalDimension: Dimension): Dimension
  
  }
  
  case class Dimension(width: Int,  height: Int)
  
  case object Large extends ResizedImageKey {
    def getDimension(originalDimension: Dimension) = Dimension(1000,1000)
  }
  
  case object Medium extends ResizedImageKey{
    def getDimension(originalDimension: Dimension) = Dimension(500,500)
  }
  
  case object Small extends ResizedImageKey{
    def getDimension(originalDimension: Dimension) = Dimension(100,100)
  }
  </code></pre>
  
  <p>What I want can be done in Java by giving an implementation to the enum values. Is there an equivalent in Scala?</p>