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

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

5 ответов

Решение

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

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

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


Чтобы увидеть, как компилятор заменяет оператор 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и в байт-коде нет оператора импорта.

Нет, компилятор удаляет их после компиляции. But two issue you may face

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

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

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

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

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

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

Документация: лучшие практики для повышения производительности

Другие вопросы по тегам