我经常在我的项目中编写这个实用程序:
def instance[T](implicit m: Manifest[T]) =
m.erasure.newInstance.asInstanceOf[T]
它看起来很可能在标准库中,但我一直无法找到它。我错过了吗?如果没有,可以添加它的权力:)
编辑
如果 T 缺少无参数构造函数时的运行时异常是不可接受的,可以定义
def maybeInstance[T:Manifest] = try Some(instance[T]) catch {case _ => None}
可能使基础instance
功能私有。但是,许多标准函数会引发运行时异常,包括除法和许多网络操作。