Scala: как избежать использования экзистенциального типа - PullRequest
1 голос
/ 04 мая 2019

Предположим, у меня есть черта, определенная как

trait SomeTrait[A] {
  def doSomething(): Seq[A]
}

и несколько классов, которые расширяют эту черту следующим образом.

class SomeClass extends SomeTrait[SomeType] {

  def doSomething(): Seq[SomeType] = {
    :
  }

}

Теперь в другом классе я хочу сохранить коллекцию экземпляров классов, расширяющих эту черту.

class AnotherClass {
 pirvate val someClassInstances = mutable.Buffer[SomeTrait[_]]()
 def addSomeClass[A](sc: SomeTrait[A]): Unit = {
   this.someClassInstances += sc
 }
}

Как мне избежать использования экзистенциального типа здесь?

1 Ответ

0 голосов
/ 10 мая 2019

Соответствует ли следующее вашим потребностям:

import scala.collection.mutable

trait SomeTrait[A] {
  def doSomething(): Seq[A]
}

class SomeClass extends SomeTrait[Int] {
  def doSomething(): Seq[Int] = ???
}

class AnotherClass {
  private val someClassInstances = mutable.Buffer[SomeTrait[_]]()
  def addSomeClass(sc: SomeTrait[_]): Unit = {
    this.someClassInstances += sc
  }
}

...