Java for Beginner
676 subscribers
545 photos
155 videos
12 files
836 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет!✌️

Сегодня в 16:00 по МСК, я предлагаю вновь встретиться в Яндекс.Телемост!

Сегодня я хочу рассказать Вам о классах Pageable, Specification и немного о Criteria API.

Узнаем, для чего нам пагинация, фильтрация и как это работает под капотом.

Жду всех! 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
А потом ты становишься тимлидом и отрываешься😂

https://t.me/Java_for_beginner_dev

#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Пагинация и фильтрация средствами JAVA.

Встреча от 20.04.2025

Запись встречи -
YOUTUBE
RUTUBE

На сегодняшней встрече мы разобрали такую немаловажную и довольно часто встречающуюся тему как пагинация и фильтрация средствами JAVA.

Что мы узнали:
➡️ Что такое пагинация и зачем она нужна.
➡️ Как реализованы интерфейсы Pageable и Specification.
➡️ Рассмотрели способы реализации пагинации и фильтрации.
➡️ Написали небольшой проект, где все это пощупали руками.

Максимально подробно все реализовано в GitHub -
https://github.com/Oleborn/ReserchPagebleAndSpecification

Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!

Всем кто пришел и помогал вопросами, моя большая благодарность! 🤙
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Record классы в Java

Record классы в Java — это специальный вид классов, введенный в Java 16 (JEP 395) как финальная фича после предварительных версий в Java 14 и 15. Они предназначены для упрощения создания неизменяемых (immutable) классов, которые используются для хранения данных, таких как DTO (Data Transfer Objects) или простые модели данных. Основная цель record классов — сократить объем шаблонного кода (boilerplate code), который обычно пишется для классов, хранящих данные, например, для геттеров, конструкторов, методов equals(), hashCode() и toString().

Объявление record класса выглядит следующим образом:

public record Person(String name, int age) {}


В этом примере Person — это record класс с двумя компонентами: name (тип String) и age (тип int).

При компиляции Java автоматически генерирует для этого класса следующее:
Финальные приватные поля для каждой компоненты (name и age).
Публичные методы доступа (геттеры) с именами, совпадающими с названиями компонент, например, name() и age().
Конструктор, который принимает все компоненты и инициализирует их.
Реализацию методов equals(), hashCode() и toString(), которые учитывают все компоненты.


Важно отметить, что record классы по умолчанию неизменяемы: после создания объекта его состояние нельзя изменить, так как поля финальные. Это делает их особенно удобными для безопасной передачи данных, например, в многопоточных приложениях.

Record классы также имеют ряд ограничений. Они не могут наследоваться от других классов (хотя могут реализовывать интерфейсы), и нельзя добавлять новые поля экземпляра, помимо компонент, указанных в объявлении. Однако можно определять статические поля, методы и даже конструкторы с дополнительной логикой.

Пример использования:
Person person = new Person("Alice", 25);
System.out.println(person.name()); // Alice
System.out.println(person.age()); // 25
System.out.println(person); // Person[name=Alice, age=25]


#Java #Training #Medium #Record
Что выведет код?

public class Task210425 {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add(new String("Java"));
set.add(new String("Java"));
set.add("Python");
set.add("Python".intern());

System.out.println(set.size());
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
3%
1
38%
2
59%
3
0%
4
Кто работал с AS, все так плохо? 🧐😂

https://t.me/Java_for_beginner_dev

#Mems
Вопросы с собеседования 👩‍💻

Какой метод используется для удаления первого элемента в LinkedList?
Anonymous Quiz
9%
remove()
19%
deleteFirst()
57%
removeFirst()
15%
pop()
Кастомизация и использование Record классов

Record классы в Java не только упрощают написание кода, но и предоставляют гибкость для настройки под конкретные задачи. Хотя многое генерируется автоматически, разработчик может переопределить или добавить поведение, если это необходимо.

Кастомные конструкторы.

В record классе можно определить собственный конструктор, чтобы добавить валидацию или преобразование данных. Например:
public record Person(String name, int age) {
public Person {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
name = name.trim(); // Удаляем пробелы
}
}


Здесь используется компактная форма конструктора (без круглых скобок), но можно написать и полный конструктор с явным указанием параметров. Это полезно для проверки входных данных или их нормализации.

Добавление методов.

Record классы поддерживают определение как статических, так и экземплярных методов. Например, можно добавить метод для вычисления чего-либо на основе компонент:
public record Person(String name, int age) {
public String greeting() {
return "Hello, my name is " + name + " and I'm " + age;
}
}


Переопределение стандартных методов.

Если автоматически сгенерированные методы equals(), hashCode() или toString() не подходят, их можно переопределить. Например, можно настроить toString() для специфического формата:
public record Person(String name, int age) {
@Override
public String toString() {
return name + ", " + age + " years old";
}
}


Реализация интерфейсов.

Record классы могут реализовывать интерфейсы, что делает их полезными для интеграции с существующими системами:
public record Person(String name, int age) implements Comparable<Person> {
@Override
public int compareTo(Person other) {
return this.name.compareTo(other.name);
}
}


Примеры использования.

Record классы идеально подходят для моделирования данных в API, конфигураций или результатов запросов. Например, в веб-приложении record может представлять ответ от сервера:
public record ApiResponse(int status, String message, LocalDateTime timestamp) {}


Или для представления точки в двумерном пространстве с дополнительной логикой:

public record Point(double x, double y) {
public double distanceTo(Point other) {
return Math.sqrt(Math.pow(this.x - other.x, 2) + Math.pow(this.y - other.y, 2));
}
}


Когда использовать record классы?

Они лучше всего подходят, когда нужен простой, неизменяемый контейнер данных с минимальной логикой. Если требуется сложная бизнес-логика или изменяемость, обычные классы могут быть предпочтительнее.

Ограничения и подводные камни.


Record классы нельзя расширять (они финальные), и они не поддерживают добавление нестатических полей вне компонент. Также стоит помнить, что автоматическая генерация методов (например, equals()) может не учитывать специфические требования, поэтому иногда нужно их переопределять вручную.

#Java #Training #Medium #Record
Please open Telegram to view this post
VIEW IN TELEGRAM