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

Java: import statement и полное имя?

Я пробовал найти ответ на это как в Интернете, так и в своем собственном наборе знаний, но я не могу найти окончательного четкого ответа.

Предположим, что я использую только один класс из другого пакета только один раз, который нужно импортировать, например myPack.anotherPackage.ClassName.

В чем разница, если таковая имеется, между использованием оператора import:

import myPack.anotherPackage.ClassName;

используя полное имя:

myPack.anotherpackage.ClassName classInst = new myPack.anotherpackage.ClassName();

?

Очевидно, что этот вопрос применяется только в том случае, если ClassName используется только один раз.

4b9b3361

Ответ 1

Операторы импорта делают ваш код более читаемым, так как вы не загромождаете код полным пакетом.

Если существует конфликт ClassNames, тогда только в этом случае рекомендуется использовать для полнофункциональные имена.

Ответ 2

Нет, на мой взгляд. Посмотрите на байт-код - разницы не будет.

 javap -c <your class>

Ответ 3

1.. Его значение readability < <<21 >

Оператор

2. import предоставляет cleaner code, чем использование полного имени пакета вместе с именем class или interface.

3. Но вы должны заботиться о импортировании пакетов, которые неоднозначны.

  `java.awt.List` and `java.util.List`

Затем вам нужно импортировать один полный и один с полным именем пакета, например ниже

import java.util.List;

and 

java.awt.List l = new java.awt.List();

Ответ 4

От моих знаний нет разницы. Единственное различие заключается в многословии вашего кода. Как правило, чем сложнее читать, тем сложнее читать. Возможно, смотрит на байт-код?

Ответ 6

После компиляции кода нет никакой разницы. В обоих случаях байт-код будет иметь полные имена, т.е. Имена классов автоматически заменяются квалифицированными именами компилятором. Это просто, чтобы сделать жизнь программистов легкой, где нам не нужно писать полное имя для обозначения класса.

Ответ 7

Импорт и пакет используются для защиты имен и доступа (по умолчанию) Простой причиной этого может быть много классов с одинаковым именем.

Чтобы различать их, мы должны разделить их по пакетам и импортировать их, когда это необходимо.

Нет никакой разницы в импорте класса или при прямом вводе полного имени, однако есть некоторые небольшие отличия.  1. Самое главное, если вы импортируете все классы в пакет (т.е. Import xyz. *;) Классы могут по-прежнему иметь проблемы с именами, например, если есть несколько общих импортов, вы можете использовать неправильный класс во время выполнения.

  1. В случае динамической загрузки классов во время выполнения, например, при регистрации драйвера JDBC во время выполнения, вам необходимо предоставить полное квалифицированное имя класса как параметр, чтобы его можно было динамически загружать.

В целом используйте следующую передовую практику:  1. Никогда не используйте import abc. *; формат импорта и всегда импортировать отдельные классы (eclipse или некоторые IDE могут автоматически корректировать импорт в * и должны отключить это)  2. Вы должны использовать полное имя класса, когда вы уже импортировали класс с таким же именем и хотите использовать другой класс с тем же именем в той же программе.  3. Надеюсь, это поможет:)