![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Пользователи Сообщений: 157 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Итак, имеется два пакета: безымянный и именнованный. В каждом из них есть класс с одним и тем же названием.
Если мы используем эти классы по отдельности - то проблем нет, но вместе - возникает ошибка компиляции 1000, т.е. двусмысленная ссылка. Если бы можно было непосредственно обратиться к безымянному пакету, типа безымянный_пакет.имя_класса, то проблемы бы не было, но вроде он на то и безымянный, что имени нет? Или как-то можно явно указать, что используется класс безымянного пакета? Исходники: файл ./Main.as (точка входа) Код package { import flash.display.* import b.* public class Main extends Sprite { new b.A() // по отдельности работает new A() // но вместе нет. } } файл ./A.as Код package { public class A { trace("безымянный пакет") } } файл ./b/A.as Код package b{ public class A { trace("пакет b") } } Механизм спотыкания компилятора почти понятен. Директивой import b.* мы делаем доступным пространство имен public пакета b (хотя по-настоящему доступным оно становиться только после появления в коде ссылки b.A) Сразу становиться непонятно, почему запрос A ОДНОЗНАЧНО определяет класс A именно в безымянном пакете, хотя import b.* произведен (и при удалении файла ./A.as запрос A ожидаемого определяет его как класс А из пакета b)? Никакой ошибки 1000 тут нет. Понятно почему запрос b.A ОДНОЗНАЧНО определяется как класс А пакета b - т.к. ссылка на класс А уточняется именем пакета, т.е. дается абсолютная ссылка. Понятно почему одновременное использование ссылок A и b.A ставит компилятор в тупик (ставит именно ссылка A, т.к. ссылка b.A уточнена). Открыты пространства имен public безымянного и именованного пакетов. И относительная (короткая) ссылка A получается двусмысленной. Мне думается, что если уточнить ссылку А, как относящуюся именно к безымянному пакету, то ошибки 1000 не будет. Но я не знаю как это сделать и вообще не уверен, что такое возможно... Сообщение отредактировал chingachgoog - 28.05.2009 - 18:44 |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 31.05.2009 - 13:45 |