Scala:需要类类型,但找到了T

陶罐蔬菜

我已经找到了与此特定问题类似的问题,但是该问题是由于有人试图直接实例化T。在这里,我试图创建一个特质,它是扩展类并将其自动存储在Riak等数据库中的通用接口classOf[T]使用Scala 2.10。

这是我的代码:

trait RiakWriteable[T] {

  /**
   * bucket name of data in Riak holding class data
   */
  def bucketName: String

  /**
   * determine whether secondary indices will be added
   */
  def enable2i: Boolean

  /**
   * the actual bucket
   */
  val bucket: Bucket = enable2i match {
    case true => DB.client.createBucket(bucketName).enableForSearch().execute()
    case false => DB.client.createBucket(bucketName).disableSearch().execute()
  }

  /**
   * register the scala module for Jackson
   */
  val converter = {
    val c = new JSONConverter[T](classOf[T], bucketName)
    JSONConverter.registerJacksonModule(DefaultScalaModule)
    c
  }

  /**
   * store operation
   */
  def store = bucket.store(this).withConverter(converter).withRetrier(DB.retrier).execute()

  /**
   * fetch operation
   */
  def fetch(id: String): Option[T] = {
    val u = bucket.fetch(id, classOf[T]).withConverter(converter).withRetrier(DB.retrier).r(DB.N_READ).execute()
    u match {
      case null => None
      case _ => Some(u)
    }
  }

}

编译器错误为class type required but T found

用法示例(伪代码):

class Foo

object Foo extends RiakWriteable[Foo]

Foo.store(object)

因此,我猜测T的清单未正确定义。我是否需要在某处隐式定义它?

谢谢!

陶罐蔬菜

这是一个中间解决方案,尽管它converter省去注册(对于该用例,我可能会永久保留,但不确定)。

/**
 * trait for adding write methods to classes
 */
trait RiakWriteable[T] {

  /**
   * bucket name of data in Riak holding class data
   */
  def bucketName: String

  /**
   * determine whether secondary indices will be added
   */
  def enable2i: Boolean

  /**
   * the actual bucket
   */
  val bucket: Bucket = enable2i match {
    case true => DB.client.createBucket(bucketName).enableForSearch().execute()
    case false => DB.client.createBucket(bucketName).disableSearch().execute()
  }

  /**
   * store operation
   */
  def store(o: T) = bucket.store(o).withRetrier(DB.retrier).execute()

  /**
   * fetch operation
   */
  def fetch(id: String)(implicit m: ClassTag[T]) = {
    val u = bucket.fetch(id, classTag[T].runtimeClass).withRetrier(DB.retrier).r(DB.N_READ).execute()
    u match {
      case null => None
      case _ => Some(u)
    }
  }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala:需要类类型,但找到了T

来自分类Dev

需要类类型但找到 E(scala 宏)

来自分类Dev

如何摆脱:类类型是必需的但找到了T

来自分类Dev

Scala:从mixin类型别名继承时,“类类型是必需的,但找到了{trait}和{trait}”

来自分类Dev

类别类型为必填项,但找到了T

来自分类Dev

类型不匹配; 找到`Message`,需要`T`

来自分类Dev

Pig错误:未处理的内部错误。找到了接口org.apache.hadoop.mapreduce.TaskAttemptContext,但是需要使用类

来自分类Dev

Google Play服务已过时。需要4242000但找到了4132534

来自分类Dev

错误:需要数组,但找到了字符串

来自分类Dev

Scala类型类

来自分类Dev

Scala类型类的多态

来自分类Dev

Scala类型类

来自分类Dev

Scala输入:“预期_ $ 1,得到了T”

来自分类Dev

Scala-预期的标识符,但找到了“ =>”

来自分类Dev

原则2“在关联上找到了类型的实体,但是是预期的”

来自分类Dev

RuntimeError:预期的标量类型为Long,但找到了Float

来自分类Dev

Composer找不到类...但是找到了同级文件

来自分类Dev

Hadoop / Rubydoop +Cloud⁹:找到了类,但是期望使用接口

来自分类Dev

symfony 找到了文件但是类不在里面

来自分类Dev

Symfony 4:找到了文件,但类不在其中

来自分类Dev

Scala“未找到:类型”错误

来自分类Dev

类未找到错误-Scala

来自分类Dev

如何找到类型类的祖先?

来自分类Dev

不兼容的类型;需要并找到。但找到的是必需的类型

来自分类Dev

出现错误“无法将构造函数实例化为预期的类型;找到了:(T1,T2)必需:List [(Char,Int)]”

来自分类Dev

未找到类“FpdfTpl”但需要/包含

来自分类Dev

Scala擦除类类型参数

来自分类Dev

Scala中类型类的性能

来自分类Dev

Scala中的类型类API

Related 相关文章

  1. 1

    Scala:需要类类型,但找到了T

  2. 2

    需要类类型但找到 E(scala 宏)

  3. 3

    如何摆脱:类类型是必需的但找到了T

  4. 4

    Scala:从mixin类型别名继承时,“类类型是必需的,但找到了{trait}和{trait}”

  5. 5

    类别类型为必填项,但找到了T

  6. 6

    类型不匹配; 找到`Message`,需要`T`

  7. 7

    Pig错误:未处理的内部错误。找到了接口org.apache.hadoop.mapreduce.TaskAttemptContext,但是需要使用类

  8. 8

    Google Play服务已过时。需要4242000但找到了4132534

  9. 9

    错误:需要数组,但找到了字符串

  10. 10

    Scala类型类

  11. 11

    Scala类型类的多态

  12. 12

    Scala类型类

  13. 13

    Scala输入:“预期_ $ 1,得到了T”

  14. 14

    Scala-预期的标识符,但找到了“ =>”

  15. 15

    原则2“在关联上找到了类型的实体,但是是预期的”

  16. 16

    RuntimeError:预期的标量类型为Long,但找到了Float

  17. 17

    Composer找不到类...但是找到了同级文件

  18. 18

    Hadoop / Rubydoop +Cloud⁹:找到了类,但是期望使用接口

  19. 19

    symfony 找到了文件但是类不在里面

  20. 20

    Symfony 4:找到了文件,但类不在其中

  21. 21

    Scala“未找到:类型”错误

  22. 22

    类未找到错误-Scala

  23. 23

    如何找到类型类的祖先?

  24. 24

    不兼容的类型;需要并找到。但找到的是必需的类型

  25. 25

    出现错误“无法将构造函数实例化为预期的类型;找到了:(T1,T2)必需:List [(Char,Int)]”

  26. 26

    未找到类“FpdfTpl”但需要/包含

  27. 27

    Scala擦除类类型参数

  28. 28

    Scala中类型类的性能

  29. 29

    Scala中的类型类API

热门标签

归档