Утилітарний клас та метод

Утилітарний клас — це клас-помічник, що містить статичні змінні та статичні методи, які виконують певний перелік завдань, об’єднаних одним сенсом.

Давайте розглянемо приклади стандартних утилітарних класів:

java.lang.Math Клас, який може виконувати безліч різних математичних обчислень, дає нам деякі математичні константи.
java.util.Arrays Клас містить різні методи для роботи з масивами (як-то сортування та пошук). Цей клас містить статичну фабрику, яка дозволяє переглядати масиви як списки.
java.lang.System Клас реалізує методи роботи з системою. Найчастіше ми можемо використовувати його для виведення тексту в консолі. Для цього ми звертаємося до статичної змінної out, яка зберігає об’єкт класу PrintStream, і вже у нього викликаємо метод println (System.out.println).

Ми можемо і самі створити утилітарний клас: для цього ми просто створюємо клас зі статичними public методами, які нам необхідні. Але треба пам’ятати, що для створення утилітарного класу потрібні вагомі причини. Наприклад, необхідність використання одного і того самого методу або набору методів, що виконує єдине завдання (скажімо, складне обчислення) із кількох різних класів.

Давай розглянемо приклад утилітарного класу Paths.

Класс Paths

До цього класу належить лише один статичний метод — get — з різними параметрами, що приймаються.

Ми можемо передати в метод get:

get(String first, String... more) Шлях цілком або перерахування назв директорій та (або) файлу в останньому аргументі.
get(URI uri) URI.

Цей утилітарний клас вирішує завдання перетворення шляху (у вигляді рядка) або URI у Path. Path ми вже проходили та розуміємо, навіщо він нам потрібен і як ми з ним далі можемо працювати.

Часто буває, що ми маємо справу із шляхом саме у вигляді String або URI. Ось тут ми і можемо скористатися методами утилітарного класу Paths.

Давайте розглянемо приклади:

Приклад Коментар

Path path =
Paths.get("C:\\Users\\User\\Documents\\MyFile.txt");
                    
Передаємо в метод get String (шлях до файлу) та отримуємо сформований Path. Далі ми можемо з ним працювати.

Path path = Paths.get(URI.create("file:///Users/User/Code/MyClass.java"));
                    
Path можна також отримати і зі сформованого URI.

Path path = Paths.get(System.getProperty("user.home"),"documents", "document.txt");
                    
Вказуємо послідовно назви директорії та файлу, до якого нам потрібно отримати шлях.

Але насправді є один нюанс. З появою Java 11 версії будь-яка реалізація методу get викликає в собіPath.of.


public static Path get(String first, String... more) {
    return Path.of(first, more);
}
 
public static Path get(URI uri) {
    return Path.of(uri);
}
    

Тепер цей утилітарний клас може бути визнаний застарілим, тому ми маємо використовувати саме Path.of для наших цілей.

Було Стало

Path path =
Paths.get("C:\\Users\\User\\Documents\\MyFile.txt");
                    

Path path =
Path.of("C:\\Users\\User\\Documents\\MyFile.txt");
                    

Path path = Paths.get(URI.create("file:///Users/User/Code/MyClass.java"));
                    

Path path = Path.of(URI.create("file:///Users/User/Code/MyClass.java"));
                    

Path path = Paths.get(System.getProperty("user.home"),"documents", "document.txt");
                    

ath path = Path.of(System.getProperty("user.home"),"documents", "document.txt");