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)
我的问题
那是好的还是有一些不同的方式(我现在使用scala 2.9.2)?
是否有类似Class.forName的东西允许从其名称中获取类型?(或者更一般地说,我可以使用type作为变量吗?)
因此,StackOverflow的一个问题是,没有人会给我点"哇,这很聪明.为了上帝的缘故,不要做那样或类似的东西." 尽管如此,作为一名高级建筑师,这似乎是我的大部分工作.
如果您使用外部反射或库,或作为与库交互的原因,那么您做错了.所以停止它.
归档时间: |
|
查看次数: |
402 次 |
最近记录: |