1
可以這樣做嗎?Foo [T]到Bar [T]的地圖
case class Foo[T](value: T)
case class Bar[T](value: T)
val map = mutable.Map.empty[Foo[_], Bar[_]]
map(Foo(1)) = Bar(1) // correct
map(Foo(1)) = Bar(1.1) // should cause a compiler error
應該允許任何類型T
,只要雙方Foo#T
和Bar#T
是相同的。
一個'Map'本身不會讓你強制執行約束,因爲'Map'接受兩個完全獨立的類型參數。你可以定義一個包裝類(圍繞'Map'),它將採用一個單一的類型參數(對於底層'Map'的鍵和值)。 – Jubobs
@Jubobs看起來我必須這樣做。我只是希望有一個更好的方法來做到這一點,因爲我將純粹出於類型約束的目的創建一個子類。 –