Подтвердить что ты не робот

Использует ли неиспользуемая декларация импорта память на Java?

Используется ли неиспользуемый импорт - import android.widget.RelativeLayout; есть память? Просто хотите знать, насколько это или просто ценно? Может быть, это глупый вопрос, но я не нашел ответа.

4b9b3361

Ответ 1

Нет, они не берут память. Импорт используется компилятором для разрешения имен классов во время компиляции.

Компилятор изменяет каждое имя класса на полное имя. И удаляет оператор импорта. Таким образом, оператор import не делает это байтовым кодом.

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


Чтобы узнать, как компилятор заменяет оператор import, вы можете сгенерировать байт-код вашего класса с помощью команды javap. Рассмотрим приведенный ниже код:

import java.util.*;
import java.util.regex.*;

public class Test {
    public static void main(String[] args) {

    }
}

Просто скомпилируйте приведенный выше код и проверьте код байта, используя следующую команду:

javap Test

Он выдает следующий вывод:

public class Test {
  public Test();
  public static void main(java.lang.String[]);
}

Итак, вы можете видеть, что тип String заменяется на его полное имя java.lang.String, и в байтовом коде нет инструкции import.

Ответ 2

Нет, компилятор удаляет их после компиляции. Но вы можете столкнуться с двумя проблемами:

  • беспорядок кода
  • Если вы импортируете некоторые классы из jar и позже удалили jar, но не импортировали, вы можете получить ошибку времени компиляции

Ответ 3

Не влияет на время выполнения. Это может сделать процесс компиляции очень маленьким (неизмеримым) медленнее. Но что касается их наличия, лучше удалить их, потому что они уменьшают размер файлов и упрощают чтение того, что импортируется на самом деле.

Ответ 4

Неиспользуемый импорт не влияет на время выполнения (поскольку в байтовом коде нет импорта). Однако неиспользуемые импорты будут влиять на компилятор, но не на много.

В общем, импорт только того, что вам нужно, приведет к улучшению ремонтопригодности и удобочитаемости кода.

Ответ 5

Не влияет на время компилятора rumtime,

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

Документация: Рекомендации по эффективности