Неквалифицированное имя в Java
Учитель на наших уроках программирования говорит о "неквалифицированных именах", но мне интересно, что они на самом деле.
Я подозреваю, что такие вещи, как имена методов, неквалифицированы, но я не уверен.
Кто-нибудь может мне это объяснить? Мне нужно это знать, потому что мне нужно объяснить, как Java выглядит безусловным именем.
5 ответов
Полное имя - это полное имя, например:
java.util.ArrayList list;
Неквалифицированное имя имеет только последнюю часть:
import java.util.*;
ArrayList list;
Термин также может применяться к полям и методам.
Итак, если вы можете импортировать классы, зачем вам когда-либо использовать квалифицированное имя?
Вам это нужно, когда вы используете два класса, которые, хотя они из разных пакетов, имеют одно и то же имя. Классический пример - класс со смешным именем из JDK:
java.sql.Date
который, кстати, расширяется
java.util.Date
Обычно достаточно ссылаться на экземпляры обоих классов, поэтому вам нужен код, который выглядит следующим образом:
public void process(java.util.Date fromDate) {
RowSet rows = <run query with fromDate as parameter>
while (rows.nsxt()) {
java.sql.Date date = rows.getDate(1);
// code that needs date
}
}
Если вы используете два омонимичных класса, нельзя избежать определения хотя бы одного - вы можете импортировать один, но импорт обоих создает неоднозначность.
Полное имя в Java включает в себя определенный пакет, из которого произошли класс, интерфейс, перечисление или поле.
Пример: java.util.ArrayList
это полное имя.
Неквалифицированное имя - это просто класс, интерфейс, перечисление или поле без информации о пакете.
Пример: ArrayList
Например, com.yourcompany.domain.Person - это полное имя класса, а Person - имя класса или неквалифицированное имя класса.
Квалифицированное имя: org.springframework.jdbc.core.JdbcTemplate
Имеет имя пакета org.springframework.jdbc.core
тогда название класса JdbcTemplate
Неквалифицированное имя: JdbcTemplate
Это только имя класса без имени пакета.
Например: полное имя - это полный адрес вашего дома, а неполное имя - только ваше домашнее имя.
Добавление к разговору части, которая еще не упоминалась (о которой прямо не спрашивают, но я считаю, что это полезное дополнение к беседе):
Все имена в Java требуют квалификации; однако, некоторые настолько интегрированы в работу Java, что предполагается - или, по умолчанию, - "в классе", который вы кодируете (или import
ред). Лисков (2000) приводит прекрасный пример этого: java.lang
- класс, содержащий такие объекты как String
,
Вы часто будете видеть неквалифицированные имена в Java. Это часто связано с расположением класса или метода относительно класса, в котором вы пытаетесь получить к нему доступ (тот же пакет). Выше, другие плакаты упомянули концепцию packages
на Яве.
Пакеты позволяют разрешать или, возможно, лучше предотвращать конфликты имен. Каждый пакет в программе может дублировать имена классов и т. Д. Другого пакета. В этом случае для доступа к правильному классу используются полностью определенные имена (как видно из других ответов). Вы также можете импортировать пакет, чтобы избежать использования его полного имени; однако, если два импортированных класса содержат конфликт имен, у вас будет небольшая проблема.