Я делаю язык JVM. Этот язык имеет модули (пространства имен) и возможность импорта java-библиотек. В разделе импорта пользователь может импортировать такие вещи, как «java.io. » или «java.concurrent.» и т. Д. Как узнать, что ссылка «Файл» в источнике находится в пакете java.io, а не где-нибудь еще?Как разрешить класс/поле в компиляторе JVM?
ответ
Поскольку Java статически типизирован, поиск должен быть однозначным. При импорте целых пакетов (или пространств имен) вашему компилятору необходимо будет обрабатывать конфликты имен в этих пространствах имен, если типы используются в источнике. Поэтому вам нужно будет просмотреть список доступных типов для проверки.
Вот почему вы иногда видите исходный код с полным расширением класса. например java.util.Date при импорте java.util и java.sql В противном случае компилятор не знает, какой из них использовать.
У Scala есть интересные функции по импорту из пакетов Java. Вы можете посмотреть на них для вдохновения.
«Итак, вам нужно будет просмотреть список доступных типов для проверки». это именно то, что я хочу знать, как сканировать доступные типы? Я не знаю никаких Package.scan() в java. Спасибо за ссылку scala, я посмотрю – islon
Если вы хотите знать, какие классы находятся в пакете, вам необходимо указать все файлы классов в каталоге этого пакета в пути к классу.
- 1. Как работает Profiler в JIT-компиляторе механизма выполнения?
- 2. Ошибка в компиляторе C, но не в компиляторе C++
- 3. Как разрешить «порт отладки JVM -1 используется». вопрос о RAD?
- 4. Семантические правила в компиляторе
- 5. Ошибка в компиляторе?
- 6. указатели в компиляторе IAR
- 7. Использование синглтонов в компиляторе
- 8. Узкий анализ в компиляторе
- 9. Проверка типа в компиляторе
- 10. Как перенести Sun JVM в IBM JVM
- 11. Разрешить модульную разработку, продолжая работать в одном JVM?
- 12. Как отключить удаление кода в компиляторе Java?
- 13. как этот код выполняется в компиляторе?
- 14. Как использовать gcov в кросс-компиляторе?
- 15. Как запустить код java в моем компиляторе
- 16. Как реализовать прямые ссылки в компиляторе?
- 17. Как использовать относительный путь в компиляторе 'edg'?
- 18. Как таблица символов управляется в компиляторе
- 19. Как работает fork() в gcc-компиляторе?
- 20. Как std :: string работает в компиляторе?
- 21. Выполнение .lib в компиляторе C
- 22. Выравнивание в компиляторе SunStudio C++
- 23. эквивалент стека в компиляторе clang?
- 24. Неиспользованная переменная в компиляторе g ++
- 25. Проблемы использовать указатели в компиляторе
- 26. Разница в параметрах JVM клиента/сервера
- 27. com.sun.tools.javac.jvm.ClassWriter эквивалент в компиляторе JDT
- 28. Продвинутая компиляция в компиляторе google
- 29. Ошибка выполнения в онлайн-компиляторе
- 30. как jvm хранит объекты внутри памяти jvm
Я с нетерпением жду обсуждения об этом. –