Java 斯卡拉番石榴
我正在使用scala中的java库 我需要在scala中实现一个抽象类,但是java中抽象类中使用的guava的TypeToken存在一些问题。问题在于,有时在scala中,TypeToken无法推断泛型类型:Java 斯卡拉番石榴,java,scala,reflection,types,guava,Java,Scala,Reflection,Types,Guava,我正在使用scala中的java库 我需要在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
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 ...
}
所以在上面的代码中,如果它是一个简单的用法,那么它工作得非常好。但是如果存在间接寻址(具体类型从函数传递到类),它就不再工作了
有没有关于如何让它工作的建议 您可能需要检查这一点,顺便说一句,它甚至在Java中也不起作用。这是Java泛型的局限性。谢谢各位,有没有关于深入阅读Java泛型的建议?我想您已经看到了?