Haxe:访问根包 class 如果它隐藏在另一个包的 class 后面

Haxe: access root package class if it's hidden behind class from another package

代码:

//./Main.hx
package;
import bar.Bar;
class Main {
    static var foo:Foo;
    static function main() {
        $type(foo); // I want it to be "Foo", but it's "bar.Foo"
    }
}

//./Foo.hx
package;
class Foo {}

//./bar/Bar.hx
package bar;
class Foo {}
class Bar {}

Bar 是我无法更改的库。它在文件 Bar.hx 中定义了一个名为 Foo 的 class。我没有直接使用bar.Foo,而是使用bar.Bar。我想把我的名字命名为 class Foo,这是一个很好的名字,我想不出另一个,但我不能使用它,因为它隐藏在 bar.Foo 后面。我能做什么?

其中一个解决方案是将 bar.Foo 声明更改为

private class Foo {}

它可以工作并且不会破坏任何东西,但我不想更改库。

import bar.Bar 是一个 模块导入 ,这意味着它导入 Bar.hx 模块中的所有类型。因此,如果您还想阻止 bar.Bar.Foo 被导入,您可以显式导入 only Bar 类型,如下所示:

import bar.Bar.Bar;

这在 Haxe 手册的 Import 部分中有解释。