簡體   English   中英

Scala:如何避免使用存在類型

[英]Scala: How to avoid using the existential type

假設我有一個定義為

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
 }
}

如何避免在這里使用存在類型?

以下內容是否滿足您的需求:

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
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM