Утилитарные классы предназначены не для создания объектов, а для предоставления статических методов для выполнения общих функций. Если вы пишете слишком много таких классов, пересмотрите свой подход к проектированию кода.
Однако иногда они необходимы, например, для реализации внутренних предметно-ориентированных языков (DSL) в Java. В таких случаях часто отступают от принципов ООП, чтобы сделать синтаксис короче.
• Сделайте конструктор приватным, чтобы класс нельзя было создать.
• Сделайте класс final, чтобы его нельзя было наследовать.
• Объединяйте методы в утилитарные классы по функциональности. Избегайте общих названий, таких как MvcUtils или CommonUtils.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤🔥2
Java предоставляет множество возможностей для оптимизации производительности приложений.
java -XX:+UseG1GC G1GCExample
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Теперь более трудное задание. Не читайте решение. Посмотрите сможете ли вы найти
ответ самостоятельно. Когда я запущу следующую программу:
for (int i = 0; i < 10; i++) {
System.out.println((Integer) i);
}Иногда я получаю следующий вывод:
92
221
45
48
236
183
39
193
33
84
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😱3❤🔥2
Datafaker создает фиктивные данные для ваших программ JVM за считанные минуты, используя широкий спектр из более чем 100 поставщиков данных.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5❤🔥1
Несмотря на критику функции клонирования объектов в Java, если вам нужно реализовать метод
clone(), вот несколько лучших практик для упрощения задачи:public Course clone() {
Course c = null;
try {
c = (Course)super.clone();
} catch (CloneNotSupportedException e) {} // Не произойдет
return c;
}clone() не вызовет CloneNotSupportedException, если класс реализует интерфейс Cloneable. Возврат подкласса называется ковариантным переопределением методов и доступен с Java 5, что позволяет избежать приведения типа на стороне клиента:Course javaBeginners = new Course("Java", 100, 10);
Course clone = javaBeginners.clone();Ранее, например, с классом Date, нужно было явно приводить результат метода
clone():Date d = new Date();
Date clone = (Date) d.clone();
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤🔥1
В Java есть несколько способов перебрать список: цикл
for с индексом, расширенный for и Iterator. Раньше я использовал цикл for с методом get(), как показано ниже:for (int i = 0; i < list.size(); i++) {
String name = list.get(i);
}🗣️ Этот метод работает для ArrayList, но если список — это LinkedList или другая реализация без поддержки случайного доступа, время выполнения увеличится до O(N^2), потому что get() для LinkedList имеет O(n) сложность.
Кроме того, при использовании циклов может возникнуть ошибка в многопоточном режиме, например, при работе с CopyOnWriteArrayList, когда один поток изменяет список, а другой пытается получить доступ к элементам, что может привести к IndexOutOfBoundsException.
Iterator<String> itr = list.iterator();
while (itr.hasNext()) {
String name = itr.next();
}
Это безопаснее и предотвращает непредсказуемое поведение.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Maven — один из трёх самых популярных инструментов для сборки проектов на Java. Он отвечает за компиляцию, создание jar-файлов (Java-архивов), создание дистрибутива программы, генерацию документации.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤🔥1
В Java 8 было внесено несколько крупных изменений, улучшивших API параллелизма, включая метод newWorkStealingPool().
• Новые методы для ConcurrentHashMap: forEach(), forEachEntry(), forEachValue(), reduce(), merge() и search().• CompletableFuture может явно устанавливать свое значение и статус.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5😢2
Метод
postMail отправляет письмо на заданные адреса. Он принимает список получателей, тему, сообщение и адрес отправителя.Transport.send.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Этот код создает PDF-файл с использованием библиотеки iText в Java.
• Внутри метода main создается новый PDF-документ, добавляются два параграфа: один с текстом "Hello Kiran" и второй с текущей датой и временем.• Затем документ сохраняется в файл C:\Test.pdf. Если возникает ошибка, она выводится в консоль.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Этот код преобразует дату из формата
Java java.util.Date в формат java.sql.Date, который используется для работы с базами данных.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Перегрузка методов происходит, когда в одном классе несколько методов имеют одинаковое имя, но разные параметры.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤🔥1
Рефлексия в Java позволяет динамически получать информацию о классе и его методах во время выполнения.
toString(), чтобы он автоматически выводил значения всех полей объекта, что может быть полезно для отладки и логирования.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤🔥1
Java 8 представила возможность добавлять методы с реализацией по умолчанию (
default) в интерфейсы. 🗣️ Это открывает интересные возможности для создания шаблонных методов, которые могут быть переопределены в классах, реализующих интерфейс.
• default методы в интерфейсах позволяют задавать базовое поведение, которое можно переопределить в классах, реализующих интерфейс.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤🔥1
Работа с объединением строк — это обычная задача, которая может стать громоздкой, если приходится учитывать разделители и правильное форматирование.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Двоичная Java: CDS, CRaC и AOT для ускорения запуска и прогрева JVM
Это текстовая версия доклада с HighLoad++ 2024 , с которым выступал один из наших бывших девелопер-адвокатов @RustamKuramshin Также есть отдельная запись доклада , сделанная силами участников...
👍3
В Java 8 был введен метод
removeIf, который позволяет удалить элементы из коллекции, удовлетворяющие определенному условию, без необходимости явного использования цикла.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
JOOQ (Java Object Oriented Querying) — это мощная библиотека для построения SQL-запросов в Java с использованием объектно-ориентированного подхода. Она генерирует типизированный SQL-код на основе вашей базы данных, что позволяет избежать ошибок на этапе компиляции.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥5