带参数的 newInstance
有没有什么方法可以在 Scala 中“动态”/反射地/等创建带有参数的类的新实例?
例如,类似:
class C(x: String)
manifest[C].erasure.newInstance("string")
但是可以编译。 (放心,这也是在比这个简化示例更有意义的上下文中使用的!)
Is there any way to 'dynamically'/reflectively/etc create a new instance of a class with arguments in Scala?
For example, something like:
class C(x: String)
manifest[C].erasure.newInstance("string")
But that compiles. (This is also, rest assured, being used in a context that makes much more sense than this simplified example!)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
erasure
的类型为java.lang.Class
,因此您可以使用构造函数(无论如何,在这个简单的情况下您不需要清单 - 您只需使用classOf [C]
)。您可以先使用getConstructor
方法找到对应的构造函数(具有对应的参数类型),然后直接调用newInstance
,而不是直接调用newinstance
它:erasure
is of typejava.lang.Class
, so you can use constructors (anyway you don't need manifest in this simple case - you can just useclassOf[C]
). Instead of callingnewinstance
directly, you can at first find correspondent constructor withgetConstructor
method (with correspondent argument types), and then just callnewInstance
on it: