使用する特定のデータ構造の実装を指定するパラメーターを取る必要があるアプリケーションを構築しています。たとえば、パラメーターのスーパータイプは Super であり、SubX として多くの実装が提供されています。私のアプリケーションのユーザーによって提供された、コンパイル時に知られていない SubY もあるかもしれません。
アプリケーション内では、パラメーターが渡され、Sub_ のインスタンスの作成、Super で定義されたメソッドの呼び出し、パラメーター化された型のパラメーターとして使用されます。
パラメーター化された型のみの場合は、クラスもパラメーター化することができ、それは機能します。ただし、そのようなオブジェクトのインスタンスを作成する必要があるため、アプリケーションを構成する最善の方法は何かを考えています。
タイプとファクトリーをパラメーターとして渡す必要がありますか? ファクトリ パターンは見苦しく、このアプローチは避けたいと思います。その上、あまりにも多くのパラメーターが渡されます (私のアプリケーションでは実際にそのようなパラメーターがいくつか必要です)。
オブジェクトを作成して、この構成をそこに貼り付ける必要がありますか? オブジェクト object を実行時に解決して、コンパイル時に構成を認識できないようにすることはできますか?
編集:理想的には、次のコードのようなものが欲しいです。これに基づいて最小限の実用的な例を提供できますか?
class Test[Type <: Super] {
def main {
val testVal: Type = new Type()
testVal.methodDefinedInSuper()
}
}