Scala类[_ $ 1],其中类型_ $ 1

cro*_*ies 1 reflection types scala scala-2.10 jackson-modules

现在正试图实例化一个新JSONConverter的注册Jackson的Scala模块.

  private def getConverter(implicit m: ClassTag[T]) = {
    new JSONConverter[T](classTag[T].runtimeClass, bucketName)
    JSONConverter.registerJacksonModule(DefaultScalaModule)
    converter
  }
Run Code Online (Sandbox Code Playgroud)

上面的代码位于标准的Scala特征中trait Writeable[T] { }.

上面代码的问题是Scala似乎在使用Types时遇到困难.编译器错误是:

[error]  found   : Class[_$1] where type _$1
[error]  required: Class[T]
[error]         val converter = new JSONConverter[T](classTag[T].runtimeClass, bucketName(clientId))
[error]                                                          ^
[error] one error found
Run Code Online (Sandbox Code Playgroud)

有谁知道这个问题的来源或容易解决?谢谢!

更新

虽然@wingedsubmariner有一个答案允许这个最初编译,但是一旦我去编写更多代码,问题就会进一步发展.我将展示一个例子:

val o = bucketLookup(clientId).fetch(id, classTag[T].runtimeClass).withConverter(converter).withRetrier(DB.retrier).r(DB.N_READ).execute()
Run Code Online (Sandbox Code Playgroud)

withConverter编译器抛出相同的错误:

[error]  found   : com.basho.riak.client.convert.JSONConverter[T]
[error]  required: com.basho.riak.client.convert.Converter[_$1] where type _$1
[error]     val o = bucketLookup(clientId).fetch(id, classTag[T].runtimeClass).withConverter(converter).withRetrier(DB.retrier).r(DB.N_READ).execute()
Run Code Online (Sandbox Code Playgroud)

我甚至尝试使用相同的类型转换,converter.asInstanceOf[JSONConverter[T]]但继承(JSONConverter<T> extends Converter<T>)似乎是级联问题.这里有什么想法?

win*_*ner 5

runtimeClassClass使用错误的类型参数重新调整a .尝试:

new JSONConverter(classTag[T].runtimeClass.asInstanceOf[Class[T]], bucketName(clientId))
Run Code Online (Sandbox Code Playgroud)