1
4

1 に答える 1

2

コードの最後のブロックは、エミュレートしている Java コードをより厳密に模倣しています。変更可能な Set の読み取り専用ビューを返します。

つまり、この状況では、バッキング実装が immutable.Set[ProductImpl] であり、immutable.Set[IProduct] を返したい場合、安全にキャストできます。

import scala.collection._

trait IProduct
class ProductImpl extends IProduct

val productsByIsin: immutable.Map[String, immutable.Set[ProductImpl]] =
  immutable.Map.empty
def getProducts(isin: String): immutable.Set[IProduct] =
  productsByIsin.getOrElse(isin, immutable.Set.empty).asInstanceOf[immutable.Set[IProduct]]
于 2009-03-25T09:06:38.187 に答える