我无法通过调用defaullt构造函数来创建ClassMirror的新实例

乔什佩蒂

我有两节课

class ESVAPI extends BibleProvider {
  ESVAPI() : super('esvapi', true, {'esv'});

 ...methods
}
abstract class BibleProvider {
  ...fields

  BibleProvider(this.name, this._requiresKey, this._versions) {
    Bible.addProvider(this, _versions.toList());
  }
}

我打算让多个类扩展抽象类,所以我想创建一个方法来创建每个BibleProvider子类的实例,我在这里创建了一个:

  ClassMirror classMirror = reflectClass(BibleProvider);
  List<DeclarationMirror> subClassMirrors = currentMirrorSystem()
      .libraries
      .values
      .expand((lib) => lib.declarations.values)
      .where((lib) {
    return lib is ClassMirror &&
        lib.isSubclassOf(classMirror) &&
        lib != classMirror;
  }).toList();
  DeclarationMirror subClassDec = subClassMirrors[0];
  ClassMirror ESVCLASS = reflectClass(subClassDec.runtimeType);
  var esvObj = ESVCLASS.newInstance(const Symbol(''), []);

但是在ESVCLASS.newInstance我收到这个异常:

No constructor '_ClassMirror' declared in class '_ClassMirror'

我在想这可能与我如何在构造函数中使用“硬编码”值调用超类有关。如果是这样,是否有一种方法可以调用子类的构造函数并让其调用超级构造函数?我不太确定。任何熟悉反射的人都知道会是什么情况?

rn

将最后三行更改为:

  ClassMirror subClassDec = subClassMirrors[0] as ClassMirror;
  var esvObj = subClassDec.newInstance(const Symbol(''), []);
  ...
  print(esvObj.reflectee.runtimeType); // ESVAPI

您正在考虑的东西已经是mirror,因此您ESVCLASS成为该类_ClassMirror本身的类镜像,而不是BibleProvider上面找到的子类只需subClassDec直接使用类镜像。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以使用多个构造函数来创建1个新实例?

通过显式调用其析构函数和构造函数来重新创建对象

如何通过使用自定义构造函数而不调用析构函数来创建具有初始大小的向量?

节点通过构造函数创建实例

通过手动调用构造函数来创建props对象是否安全并且建议这样做?

PHP动态获取类构造函数并调用它来创建新实例

SyntaxFactory通过调用基类构造函数来生成构造函数

熊猫通过应用返回字典的函数来创建新列

创建实例后如何初始化BigInteger(无法调用构造函数)

我应该在原型上还是在新创建的实例上调用构造函数方法?

将 List 添加到嵌套 List 时,为什么需要使用构造函数来创建新的 List 实例,而不是仅添加现有的 List?

如何通过将不同的参数传递给构造函数来实例化不同的单例类

使用类名称创建实例并调用构造函数

创建对象实例而不调用超类构造函数

是否可以在已经创建的实例上直接调用构造函数?

使用构造函数参数从Class创建新实例

在创建新实例的构造函数闭包中更改“ var”

通过使用不同的构造函数创建类的实例

通过构造函数创建bean实例化bean时出错

构造函数来创建DOM元素

摩卡无法创建我的函数的实例

Clang-Tidy:移动构造函数通过调用复制构造函数来初始化类成员

如何通过将对象作为参数来调用javascript / typescript构造函数?

ByteBuddy 如何使用构造函数调用类中的另一个构造函数来创建类?

您可以调用基类的构造函数来创建派生对象吗?

我如何获得一个PHP类构造函数来调用其父代的父代构造函数?

我可以在构造函数中创建actor实例吗?

稍后通过调用Class构造函数创建std :: vector <Class>

我无法通过反应创建新卡