Haxe: доступ к корневому классу пакета, если он скрыт за классом из другого пакета
Код:
//./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
это библиотека, которую я не могу изменить. Он определяет класс с именем Foo
в файле Bar.hx
, Я не пользуюсь напрямую bar.Foo
, но использовать bar.Bar
, Я хочу назвать свой класс Foo
, это хорошее имя, и я не могу думать о другом, но я не могу использовать его, потому что оно прячется за bar.Foo
, Что я могу сделать?
Одним из решений является изменение bar.Foo
декларация
private class Foo {}
Работает и ничего не ломает, но я не хочу менять библиотеку.
1 ответ
Решение
import bar.Bar
является модулем импорта, что означает, что он импортирует все типы в Bar.hx
модуль. Так что если вы хотите предотвратить bar.Bar.Foo
от импорта, вы можете явно импортировать только Bar
типа как это:
import bar.Bar.Bar;
Это объясняется в разделе " Импорт" руководства Haxe.