为什么 Type.resolveClass 和 import 不能为相同的 class 名称工作?

Why don't Type.resolveClass and import work for the same class name?

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

package mypackage;

class MyClass {}

class MySubClass extends MyClass {}

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

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

反射 API(Type 是其中的一部分)在 run-time 工作,但 sub-types 在当时和编译时存在于不同的命名空间中(对于我不完全理解的原因)。

来自 Haxe 手册的 relevant 部分:

The sub-type relation is not reflected at run-time. That is, public sub-types become a member of their containing package, which could lead to conflicts if two modules within the same package tried to define the same sub-type.var e:haxe.macro.Expr.ExprDef;