我正在構建一個應用程序,該應用程序應該接受一個參數,指定要使用的給定數據結構的實現。比方說,參數的超類型是Super,並且我提供了許多SubX實現。在我的應用程序的用戶提供的SubY中,在編譯時並不知道。如何將類型參數傳遞給我的Scala應用程序?工廠是最好的解決方案嗎?
在應用程序中,參數將全部傳遞,並將用於創建Sub_的實例,調用Super中定義的方法,並在參數化類型中用作參數。
如果它僅用於參數化類型,我可以讓我的類也參數化,並且可以工作。然而,我需要創建這樣的對象的實例,所以我想知道什麼是配置我的應用程序的最佳方式。
我應該通過類型加工廠作爲參數嗎?我發現工廠模式很醜,並且想要避免這種方法。此外,傳遞的參數太多(我的應用程序實際需要幾個這樣的參數)。
我應該創建一個對象並在那裏粘貼這個配置嗎?對象對象是否可以在運行時解析,從而允許在編譯時不知道配置?
編輯:理想情況下,我想有像下面的代碼。你能提供一個基於此的最低工作示例嗎?
class Test[Type <: Super] {
def main {
val testVal: Type = new Type()
testVal.methodDefinedInSuper()
}
}
丹尼爾,謝謝你的回答。現在對我來說這一切都很有意義。我需要'Type <:Super'出於其他原因,並且應該將它從這個例子中排除。 – lasaro