Scala newInstance()嵌套在特征中的内部类

时间:2017-06-29 07:50:08

标签: scala reflection

我正在编写一个脚本,以便在应用程序部署在新的群集上时自动为某些特定的MongoDB集合配置分片。该应用程序正在使用Lift框架,基本上每个分片集合都映射到一个MongoRecord类,该类扩展了特定的" ShardedCollection"特征。我需要在这些类上调用一个特定的方法来获取它们的集合名称。

所以第一步是在代码中找到那些特定类,为此我使用ClassUtil。然后我需要一种实例化它们的方法,为此我认为java反射应该能够做到。它的工作正常,但前提是这些类不属于外部类。

此特定边缘情况下的配置如下:

class X {
  class Y extends ShardedCollection {

  }
}

因此,在阅读了一些文档之后,我发现我必须调用YConstructor.newInstance(XObject),newInstance将XObject作为第一个参数(作为X的实例)当Y是X的内部类时。我的策略是递归地实例化封闭类,直到我得到具有ShardedCollection特征的类。

当X不再是类而是特征时出现问题,然后没有我可以使用的构造函数,但我仍然需要将XObject提供给newInstance .. Tricky :(

<小时/> 要非常简洁from the java doc

  

如果构造函数的声明类是非静态上下文中的内部类,则构造函数的第一个参数需要是封闭的实例

封闭的东西&#34;我该怎么做?是一个特质? (假设我无法修改代码库中的任何内容)

0 个答案:

没有答案
相关问题