1 - Означает ли это: я мог бы найти структуру папок, такую как javax/servlet/http
, где-то внутри этого файла HttpServlet.class?
В этом случае, вероятно, не вфайловая система как таковая.(Этот класс является частью библиотек времени выполнения J2SE.)
2 - Если нет, где именно можно найти этот файл класса?
В файле JAR, которыйна пути к классам или загрузке вашего JVM.Файл JAR представляет собой архив, содержащий .class
файлы и другие ресурсы.Путь к классу в файле JAR будет /javax/servlet/http/HttpServlet.class
.(В этом случае класс в файле rt.jar
.)
3 - Означает ли это: Это просто вложенные пространства имен, не имеющие отношения к структурам папок?
Нет.Если в вашем пути к классам есть папки файловой системы, их можно искать, чтобы найти классы, до или после файлов JAR, в зависимости от того, где они находятся в пути к классам.Путь к классам эффективно перекрывает пространства имен.Пространства имен файлов JAR могут перекрывать пространства имен папок файловой системы и наоборот, в зависимости от эффективного пути к классам.
4 - имя пакета в вышеупомянутом импорте будет javax.servlet или javax.servlet.http?
javax.servlet.http
4 продолжение - Возможно, оба являются пакетами, и первый из них является супер-пакетом последнего?
Оба являются пакетами, но в Java нет такого понятия, как «супер пакет».Что касается языка Java, то javax.servlet
и javax.servlet.http
не связаны между собой.Некоторые люди могут сказать, что javax.servlet
является родительским пакетом javax.servlet.http
, но это утверждение не имеет внутреннего значения с точки зрения языка Java.Кажущиеся родительско-дочерние отношения являются чисто традиционными.
5 - Как этот файл класса на самом деле включен?Я прочитал, что импорт не похож на C / C ++ include.
Файл класса не включен ни в каком смысле.Java import
- это не что иное, как сокращение, которое позволяет вам ссылаться на импортированное имя без указания его полного имени пакета.