Разрешение конфликта пакетов - PullRequest
1 голос
/ 17 августа 2010

Предположим, у нас есть пакет с именем com.example1, содержащий класс Hello (вместе с другими классами).

Затем у нас есть другой пакет com.example2, также содержащий класс Hello (очевидно, с другимповедение).

Теперь давайте предположим, что нам нужен каждый класс в com.example1 и класс Hello в com.example2

import com.example1.*;
import com.example2.Hello;

Какой из них вызывается в этом случае?

Hello hello = new Hello();

Или это дает ошибку компиляции?

Это просто теоретический вопрос из любопытства.

Поскольку пакеты были созданы, чтобы избежать конфликта имен, что происходит, когда два пакета содержат дваклассы с тем же именем?

Ответы [ 3 ]

5 голосов
/ 17 августа 2010

Это даст ошибку компиляции.Вы должны явно назвать класс - com.example2.Hello hello = new com.example2.Hello();

2 голосов
/ 17 августа 2010

Вместо того, чтобы оставить это на волю случая, было бы лучше, чтобы это было явно указано в ваших объявлениях. Это ошибка компиляции.

Подобное столкновение часто происходит с java.util.List и java.awt.List. Если вы явно, нет путаницы.

0 голосов
/ 07 апреля 2015

Это не выдаст ошибку компилятора, как заявили другие пользователи. Он будет использовать com.example2.Hello. Это связано с тем, что явный импорт (com.example2.Hello) всегда будет иметь приоритет над * import (com.example1. *).

...