为什么 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;
考虑以下名为 "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;