Java: использовать импорт или явное имя пакета / класса?

#java #class #inheritance #package

#java #класс #наследование #пакет

Вопрос:

Я пишу очень простое приложение, расширяющее JFrame Swing. В чем разница между созданием явной ссылки:

 public class LineTest extends javax.swing.JFrame {
...
  

или импортировать класс заранее:

 import javax.swing.JFrame;

public class LineTest extends JFrame {
...
  

Когда (и почему) вы бы использовали один метод вместо другого?

Ответ №1:

Реальной разницы нет; сгенерированный байт-код будет точно таким же. import Оператор — это на самом деле просто способ сообщить компилятору: «когда я пишу JFrame , я на самом деле имею в виду javax.swing.JFrame «.

Возможно, вы захотите использовать полные имена пакетов, если у вас есть, например, два класса с одинаковыми именами в разных пакетах. Одним из распространенных примеров из стандартной библиотеки являются классы java.util.Date и java.sql.Date .

Ответ №2:

Разница заключается только в исходном коде. Использование полного имени приводит к менее читаемому коду, поэтому все используют импорт практически исключительно. Единственное место, где я когда-либо видел, чтобы полные имена использовались последовательно, — это сгенерированный код.

Единственная причина использовать полное имя в обычном коде — это когда вам приходится использовать два класса с одинаковым простым именем (например, java.util.List и java.awt.List ) — в этом случае альтернативы нет.

Ответ №3:

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