Как мне разрешить класс / поле в компиляторе JVM? - PullRequest
2 голосов
/ 14 октября 2010

Я делаю язык JVM.Этот язык имеет модули (пространства имен) и возможность импорта библиотек Java.В разделе импорта пользователь может импортировать такие вещи, как «java.io. » или «java.concurrent. » и т. Д. Как узнать, что ссылка «Файл» в источнике находится в пакете java.и не где-нибудь еще?

Ответы [ 2 ]

1 голос
/ 14 октября 2010

Поскольку Java статически типизирован, поиск должен быть однозначным. Когда вы импортируете целые пакеты (или пространства имен), ваш компилятор должен будет обрабатывать конфликты имен в этих пространствах имен, если типы используются в источнике. Поэтому вам нужно просмотреть список доступных типов для проверки.

Вот почему вы иногда видите исходный код с расширенным полным именем класса. например java.util.Date при импорте java.util и java.sql. В противном случае компилятор не знает, какой из них использовать.

В Scala есть несколько интересных функций по импорту из пакетов Java. Вы можете посмотреть на них для вдохновения.

0 голосов
/ 15 октября 2010

Если вы хотите узнать, какие классы находятся в пакете, вам нужно перечислить все файлы классов в каталоге для этого пакета в пути к классам.

...