質問: { sql.map(this.createTypeInstance(_)).list.apply() } } ``` 本来型パラメータをインスタンス化するという発想そのものが言語仕様から見たらご法度なのかもしれませんが、 いくつかのSelect結果のキャッシュ化など、共通処理を基底クラスで行いたいためこういう構造で実装したいと考えています。 何か良いアイディアはありませんでしょうか。 よろしくお願いいたします。
回答: ジェネリクスがJavaとどう違うのだろうということを調べたときManifestやTypeTagを使った方法の記事を読んだことがあります。どういった制約があるか詳しくないですがそれらの利用については検討されたのでしょうか? 例えば下記の記事はManifestでの実装をTypeTagでの実装にどう変えるというような内容と思いますが、コンストラクターをオーバーロードしない前提ならこの記事のManifestを使ったコードがそのまま利用できるような気がしました。(オーバーロードしてあってもその配慮さえあればいける気もします) StackOverflow: How to create an instance of type T at runtime with TypeTags 自分が調べた当時は古いバージョンのScalaを使っていたせいかTypeTagサポート途中(?)だったような記憶があります。今どういう仕様なのかはおさえてません・・・