Импортируем ли мы исходный код или байт-код класса при импорте этого класса в java? - PullRequest
1 голос
/ 06 января 2020

Я начал изучать пакеты в java. Я узнал о ключевом слове импорта. Теперь я сомневаюсь, что это файл .class или. java, который импортируется, пока мы импортируем любой класс в java ,

Ответы [ 2 ]

3 голосов
/ 07 января 2020

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

Так что если вы используете класс с именем some.package.CoolClass тогда вы можете использовать это полное имя везде в своем коде или просто поставить import some.package.CoolClass; в верхней части и назвать его просто CoolClass в своем коде.

Компилятор должен иметь возможность загружать класс вы используете (независимо от того, импортировали ли вы его) и это означает, что либо необходимо найти файл .class этого класса , либо также скомпилировать файл. java в том же время (т. е. если у вас есть два класса A и B и скомпилировали их оба одновременно, то каждый из них может ссылаться на другой, даже если в то время технически их файлов классов не было).

Во время выполнения (т. Е. Когда вы фактически выполняете свой код) вам потребуются файлы .class каждого класса, который вы используете в своем пути к классам. (. java файлы не используются во время выполнения). Опять же, не имеет значения, использовали ли вы import для использования короткого имени или использовали полное имя в вашем коде.

2 голосов
/ 07 января 2020

Использует ли компилятор файлы .class или. java для импорта?

Ответ: .class файлы, возможно компиляция. java файлы.

Это работает, даже в следующем случае (когда нет файлов .class):

// p/a/A.java
package p.a;
import p.b.B;
public class A {
    public static final A DEFAULT_A = new B();
}

// p/b/B.java
package p.b;
import p.a.A;
public class B extends A {
}

Причина, по которой с этим (зависимость cycli c) можно справиться , заключается в том, что файлы .class сравнимы с объектными файлами .obj / .o: в файлах .class есть символьная информация c (имена классов и методов). И так же, как объектные файлы связаны с компоновщиком исполняемого файла или библиотеки, загрузчик классов java разрешает все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...