私はscalaにあまり詳しくないので、私の質問が理にかなっていることを願っています:
私は複雑なパラメータ化されたクラスを持っていますが、それを次のように再開しましょう:
class Foo[T] {
def foo(x: T) = {/*do something*/}
}
プログラムの別の部分で、次のようなものを構築したいと思います。
val mylist = List[Foo[_]](new Foo[Int], new Foo[String], ...)
次のようなことができるようになりたいです。
mylist(0).foo(2)
しかし得る
型の不一致: 予想される _$1、実際: Int
TypeTags で解決できると思いますが、この件に関して私が見た資料を適応させることはできませんでした。ここで、Int によってパラメーター化されるはずの Foo に伝えたいと思います。
さらに、実際の使用例では、変数を取得します:
val x : Any
mylist(i) に一致することはわかっていますが、mylist(i) にある Foo[_] の型も x の型もわかりません。それでも私は次のようなことをしたいと思います:
mylist(i).foo(x)
または私の考えでは(ただし、これはscalaではほとんど意味がありません):
mylist(i).asInstanceOf(Foo[x.getClass]).foo(x.asInstanceOf(x.getClass))
どうやってやるの ?
これに近い主題に関する投稿がたくさんあることは知っていますが、これを理解することはできません.