scala中的Guava TypeToken

时间:2014-12-29 14:00:11

标签: java scala reflection types 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 ...
}

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

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

0 个答案:

没有答案