从scala中的类型名称获取类型

ts.*_*ts. 1 reflection types scala

在使用scala进行一些调整之后,我找到了从给定类型创建新对象的解决方案

object Entity {

  def get[T <: Entity: ClassManifest]: T = {

      val entity = implicitly[ClassManifest[T]].erasure.getConstructors()(0).newInstance().asInstanceOf[T]

      /** some stuff **/

      entity

  }

}

abstract class Entity {

}

class Implementation extends Entity {

}
Run Code Online (Sandbox Code Playgroud)

然后用法:

var e = Entity.get[Implementation]
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 那是好的还是有一些不同的方式(我现在使用scala 2.9.2)?

  2. 是否有类似Class.forName的东西允许从其名称中获取类型?(或者更一般地说,我可以使用type作为变量吗?)

Dav*_*ith 7

因此,StackOverflow的一个问题是,没有人会给我点"哇,这很聪明.为了上帝的缘故,不要做那样或类似的东西." 尽管如此,作为一名高级建筑师,这似乎是我的大部分工作.

如果您使用外部反射或库,或作为与库交互的原因,那么您做错了.所以停止它.

  • 先生,先生,先生!我打字时敬礼,先生! (3认同)