【问题标题】:Why don't Type.resolveClass and import work for the same class name?为什么 Type.resolveClass 和 import 不能为同一个类名工作?
【发布时间】:2016-01-19 01:31:55
【问题描述】:

考虑以下名为“MyClass.hx”的文件。

package mypackage;

class MyClass {}

class MySubClass extends MyClass {}

在另一个文件中使用MySubClass时,我必须指定mypackage.MyClass.MySubClass的全名或导入mypackage.MyClass。但是,为了使用Type.resolveClass 访问此类型,我必须指定mypackage.MySubClass,并尝试解析mypackage.MyClass.MySubClass 返回null。

我不明白其中的区别,有人可以帮我理解吗?

【问题讨论】:

    标签: haxe


    【解决方案1】:

    反射 API(Type 是其中的一部分)在运行时工作,但子类型在当时和编译时存在于不同的命名空间中(出于我不完全理解的原因)。

    来自 Haxe 手册的 relevant 部分:

    子类型关系不会在运行时反映出来。也就是说,公共子类型成为其包含包的成员,如果同一包中的两个模块试图定义相同的子类型,这可能会导致冲突。var e:haxe.macro.Expr.ExprDef;

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 1970-01-01
      • 2020-11-22
      • 2014-01-20
      • 2020-03-04
      • 2020-12-31
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多