1
限制對象類型的路徑比方說,我們有以下幾點:在編譯時
interface Container
package com.one
class ContainerImplOne extends Container
package com.two
class ContainerImplTwo extends Container
我們有許多實現從集裝箱繼承,但居住在不同的包。如果我們有一個函數,它接受一個容器類型:
def compute(c: Container): Unit
我們不知道,如果傳入的對象是從包com.one或com.two。有沒有辦法限制計算函數從包二中取出Container實例?換句話說,是否有一種方法可以將類型限制爲com.Two。*?我們可以用Java還是Scala來做到這一點?
@DavisBroda不,它的問題不一樣。這裏的意義不是具體類型的名稱,而是它們從相同的接口繼承而來,函數採用接口的類型。但是這兩個實現都在不同的包中定義。我更新了impl以擁有不同的名稱。 – Mayumi
然後讓它採用containerImplTwo,而不是容器,並且您的問題已解決。如果你只需要一個實現,那麼你爲什麼要使用該接口開始? –
不,有很多Container類型的實現,它可以來自任何包。 – Mayumi