scala中的Guava TypeToken

dar*_*kjh 6 java reflection types scala guava

我正在使用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 ...
}
Run Code Online (Sandbox Code Playgroud)

所以在上面的代码中,如果它是一个简单的用法,它的效果非常好.但是如果有间接(具体类型从函数传递给类),它就不再起作用了.

有关如何使其工作的任何建议?