我对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解决,但我无法适应我在这个主题上看到的任何材料。 在这里,我想告诉Foo它'应该由Int。
进行参数化此外,在实际使用案例中,我会得到一个变量:
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))
我该怎么做?
我知道有很多关于这个主题的帖子,但我无法解决这个问题。