Вы не можете использовать классы в пакете по умолчанию из именованного пакета.
( Технически вы можете, как показано в ответе Шарика Абдуллы через API отражения, , но классы из безымянного пространства имен не входят в область действия в декларация импорта )
До J2SE 1.4 вы могли импортировать классы из пакета по умолчанию, используя следующий синтаксис:
import Unfinished;
Это больше не разрешено . Таким образом, для доступа к классу пакета по умолчанию из упакованного класса необходимо переместить класс пакета по умолчанию в собственный пакет.
Если у вас есть доступ к источнику, сгенерированному groovy, потребуется некоторая постобработка, чтобы переместить файл в выделенный пакет и добавить эту директиву «package» в начале.
Обновление 2014: ошибка 6975015 , для JDK7 и JDK8, описать даже более строгий запрет на импорт из неназванного пакета.
TypeName
должно быть каноническим именем типа класса, типа интерфейса, типа enum или типа аннотации.
Тип должен быть либо членом именованного пакета , либо членом типа, внешний лексически охватывающий тип которого является членом именованного пакета , или компиляции. ошибка времени .
Андреас указывает в комментариях :
"почему [пакет по умолчанию] существует на первом месте? Ошибка проектирования?"
Нет, это умышленно.
JLS 7.4.2. Неназванные пакеты гласят: «Неназванные пакеты предоставляются платформой Java SE главным образом для удобства при разработке небольших или временных приложений или только в начале разработки».