Java: звездочка для загрузки классов - PullRequest
4 голосов
/ 04 апреля 2010

Является ли загрузка только необходимых классов хорошим способом снижения общего использования памяти приложением Java?

Например:

import java.awt.Graphics;

против

import java.awt.*;

Ответы [ 6 ]

16 голосов
/ 04 апреля 2010

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

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

6 голосов
/ 04 апреля 2010

Проще говоря: нет.

import операторы не переводятся ни в одну форму байт-кода. Они просто ярлыки, чтобы избежать использования (некрасиво!) Полностью определенных имен типов.

4 голосов
/ 04 апреля 2010

Как говорили другие, импорт используется только компилятором. Вы МОЖЕТЕ написать всю свою программу без какого-либо импорта, используя полные имена всего, но это очень быстро вырастет.

java.io.InputStream is = new java.io.FileInputStream(new java.io.File("foo"));

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

1 голос
/ 04 апреля 2010

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

1 голос
/ 04 апреля 2010

Вы имели в виду звездный импорт как import pack.*;

В Java это никак не связано с использованием памяти, import используется только для изменения того, как вы ссылаетесь на классы. Тем не менее, существуют проблемы практики кодирования в отношении импорта звезд.

0 голосов
/ 04 апреля 2010

Явный импорт нужных вам классов против * -импорта не имеет значения. JVM загружает только то, что вы используете, и ничего более.

Сказав, что явный импорт ваших классов является хорошим решением для разработки программного обеспечения (а * -импорт является признаком бездельников, которые не знают или не заботятся о хороших принципах разработки программного обеспечения ... Я не шучу, я ' я очень серьезно.)

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