【发布时间】:2019-05-10 22:20:36
【问题描述】:
假设我有一个这样定义的特征
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
}
}
如何避免在这里使用存在类型?
【问题讨论】:
-
为什么要避免在这里使用存在类型?
-
您可以将
SomeTrait[A]更改为SomeTrait[+A]并改用Any -
我认为应该尽可能避免存在类型。我不确定在我的情况下是否可以避免它,这就是我在这里发帖的原因。
-
“我认为应该尽可能避免存在类型。”不。这是一个非常好的用途。
-
这是一篇关于存在类型的好文章:typelevel.org/blog/2015/02/26/rawtypes.html