我正在使用scala中的java lib。
我需要在scala中使用一个抽象类,但是在java中的抽象类中使用的guava的TypeToken存在一些问题。问题是有时在scala中,TypeToken无法推断泛型类型:
import com.google.common.reflect.TypeToken
class SomeClass[T] {
val tok = new TypeToken[T](getClass){}
}
object TypeTokenTest extends App {
val ok = new SomeClass[String]{}
println(ok.tok) // `java.lang.String`, OK!!
def wrap[O]() = {
new SomeClass[O]{}
}
val notOk = wrap[String]()
println(notOk.tok) // `O`, not Ok ...
}
所以在上面的代码中,如果它是一个简单的用法,它的效果非常好。但是如果有间接(具体类型从函数传递给类),它就不再起作用了。
有关如何使其工作的任何建议?