2015-05-25 2 views
0

Когда я проводил некоторое тестирование с пакетами и частными классами на Java, я заметил интересную вещь. Ниже приведена исходная структура моих проектов, класс MyTestClass.java в пакете com.test.pkg под исходной папкой src - это класс, защищенный пакетом. По моему мнению, это не должно быть доступно за пределами этого пакета. Но, интересно MyTestClass.java класс доступен в com.test.pkg под исходной папкой test. Это происходит, только если имена пакетов одинаковы, хотя они находятся в разных исходных папках.Пакет-частный класс, видимый для некоторых других пакетов (с тем же именем) в другой исходной папке

Может кто-нибудь сказать мне, почему это происходит?

TestProject 
| 
-src 
    -com.test.pkg 
    -MyTestClass.java 
-test 
    +com.test.pkg 
+1

И почему бы и нет, это тот же пакет ... Не имеет значения, находятся ли они в разных каталогах или банках. Это тот же самый пакет. –

+0

Благодарим за информацию. Если да, то каково использование источника исходных папок (src, test в этом случае). Это только для организационной цели? – k0der

+0

@ k0der - Когда вы «импортируете» классы, вы вставляете 'src' в путь класса ?. Неправильно? Вы начинаете с 'com.test ....'. Итак, 'src' и' test' находятся на одном уровне и представляют собой родительский каталог 'global'. Таким образом, пакет будет таким же. – TheLostMind

ответ

2

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

+0

Благодарим за информацию. Если да, то каково использование источника исходных папок (src, test в этом случае). Это только для организационной цели? – k0der

+0

Да, точно. Обычно вы сохраняете свой фактический код в папке src и тестовых классах в тестовой папке (хотя как класс, так и класс тестирования относятся к одному и тому же обьекту obviosly). Если бы вы сохранили их в одной папке, там был бы беспорядок, и вы не смогли бы однозначно отличить классы тестов от реальных классов. – dstronczak

+0

Получил. Спасибо! – k0der