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

Утилитарный класс — это класс-помощник, содержащий статические переменные и статические методы, которые выполняют определенный перечень задач, объединённых одним смыслом.

Давайте рассмотрим примеры стандартных утилитарных классов:

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");