Page 26 - 4657
P. 26
Оператор package
Перше, що може з'явитися у вихідному файлі Java - це
оператор package, що повідомляє транслятору, у якому пакеті
повинні визначатись класи, що містяться в даному файлі.
Пакети задають набір роздільних просторів імен, у яких
зберігаються імена класів. Якщо оператор package не
зазначений, класи попадають у безіменний простір імен,
використовуване за замовчуванням. Якщо ви повідомляєте клас,
що як належить визначеному пакету, наприклад,
package java.awt.image;
Вихідний код цього класу повинний зберігатися в каталозі
java/awt/image.
Зауваження.
Каталог, що транслятор Java буде розглядати, як кореневий
для ієрархії пакетів, можна задавати за допомогою змінної
оточення СLASSPATH. За допомогою цієї змінної можна
задати скільки кореневих каталогів для ієрархії пакетів (через ;
як у звичайному PATH).
Трансляція класів у пакетах
При спробі помістити клас у пакет, ви відразу
наштовхнетеся на тверду вимогу точного збігу ієрархії каталогів
з ієрархією пакетів. Ви не можете перейменувати пакет, не
перейменувавши каталог, у якому зберігаються його класи. Ці
труднощі видні відразу, але є і менш очевидна проблема.
Уявіть собі, що ви написали клас з ім'ям PackTest у пакеті
test. Ви створюєте каталог test, поміщаєте в цей каталог файл
PackTest.Java і транслюєте. Поки - усе в порядку. Однак при
спробі запустити його ви одержуєте від інтерпретатора
повідомлення «can't find class PackTest» («He можу знайти клас
PackTest»). Ваш новий клас тепер зберігається в пакеті з ім'ям
test, так що тепер треба указувати всю ієрархію пакетів,
розділяючи їхні імена крапками - test.PackTest. Крім того Вам
треба або підняться на рівень вище в ієрархії каталогів і знову
24