【发布时间】:2013-07-27 14:26:03
【问题描述】:
我正坐在一个大约 10000 LoC 的项目前面。我必须将此项目从 Scala 2.9 更新到 2.10。这做得很好,但由于清单,我收到了许多弃用警告。
用了stackoverflow等很多网站的搜索功能后,也没有那么多问题了。我想总结一下;重点是:
TypeTags 和 ClassTags 比 Manifests 和 ClassManifest 好得多。特别是您可以将这些用作同义词(TypeTags Manifests 和 ClassTags ClassManifest)
TypeTags 比 ClassTags 更强大,ClassTags 分别是更受限制的 TypeTags。 我的第一个问题:在这个项目中,经常使用
manifest[T].erasure.getSimpleName这个方法。现在我不能只将它切换到typeTag[T].runtimeClass.getSimpleName,因为代码不会编译,但使用classTag[T].runtimeClass.getSimpleName它会编译。 这会影响语义吗?(注意:erasure方法也已弃用;您必须改用runtimeClass)第二个问题: Scala 2.9 中清单的类型检查类似于:
manifest[T] <:< manifest[A]。在 Scala 2.10 中,我会写这个typeOf[T] <:< typeOf[A]。但是<:<已弃用?!我能否将 TypeTag 强制转换为 ClassTag?即:如果我只使用清单进行类型检查(第 3 条)和名称提取(第 2 条):我能否将每个清单/ClassManifest 重命名为 ClassTag?
【问题讨论】:
标签: scala manifest scala-2.10