Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
😁38🤣8👍3
☕️Использование библиотеки MapStruct

MapStruct – это библиотека, которая позволяет автоматически генерировать код для преобразования объектов Java одного типа в объекты другого типа. Это делает процесс маппинга объектов быстрым, удобным и безопасным.

Основные методы, которые предоставляет MapStruct:

1. @Mapper – аннотация, которая указывает, что интерфейс является маппером и должен быть компилирован в реализацию маппера.

Пример:

@Mapper
public interface CarMapper {

CarDto carToCarDto(Car car);

List<CarDto> carsToCarDtos(List<Car> cars);
}

2. @Mappings – аннотация, которая позволяет настроить маппинг полей объектов.

Пример:

@Mappings({
@Mapping(source = "make", target = "manufacturer"),
@Mapping(source = "numberOfSeats", target = "seatCount")
})
CarDto carToCarDto(Car car);

3. @Mapping – аннотация, которая позволяет настроить конкретное преобразование для поля.

Пример:

@Mapping(source = "make", target = "manufacturer")
CarDto carToCarDto(Car car);

4. @InheritInverseConfiguration – аннотация, которая указывает, что метод должен использовать обратное преобразование.

Пример:

@InheritInverseConfiguration
Car carDtoToCar(CarDto carDto);

5. @IterableMapping – аннотация, которая позволяет настроить преобразование коллекций.

Пример:

@IterableMapping(elementTargetType = CarDto.class)
List<CarDto> carsToCarDtos(List<Car> cars);

🔖Используя эти методы и аннотации, разработчики могут эффективно и легко создавать мапперы для преобразования объектов Java. MapStruct делает код более чистым, читаемым и уменьшает вероятность ошибок при преобразовании объектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍182🔥2👏1
public class Boom {
private Boom internalInstance = new Boom();

public Boom() throws Exception {
throw new Exception("Boom!");
}

public static void main(String[] args) {
try {
Boom b = new Boom();
System.out.println("Surprise");
} catch (Exception e) {
System.out.println("I caught!");
}
}
}
🤯13👍2😱1🎉1🙈1
☕️Использование библиотеки Apache Commons IO

Apache Commons IO - это библиотека, предоставляющая удобные утилиты для работы с вводом/выводом данных в Java. Она содержит множество методов, упрощающих манипуляции с файлами, потоками ввода/вывода, строками и директориями.

Ниже приведены некоторые из наиболее полезных методов Apache Commons IO соответствующие объяснения и примеры кода:

1. Метод FileUtils.readFileToString(File file, Charset encoding) - читает содержимое файла в строку.
File file = new File("test.txt");
String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8);
System.out.println(content);

2. Метод IOUtils.copy(InputStream input, OutputStream output) - копирует данные из одного потока в другой.
InputStream input = new FileInputStream("input.txt");
OutputStream output = new FileOutputStream("output.txt");
IOUtils.copy(input, output);
input.close();
output.close();

3. Метод FileUtils.listFiles(File directory, String extensions, boolean recursive) - возвращает список файлов в указанной директории с указанными расширениями.
File directory = new File("C:/my_folder");
String[] extensions = {"txt", "xml"};
List<File> files = (List<File>) FileUtils.listFiles(directory, extensions, true);
for (File file : files) {
System.out.println(file.getName());
}

4. Метод FilenameUtils.getExtension(String filename) - возвращает расширение файла.
String filename = "example.txt";
String extension = FilenameUtils.getExtension(filename);
System.out.println(extension);

Это лишь небольшая часть методов, которые предоставляет Apache Commons IO. Использование этой библиотеки может значительно упростить работу с вводом/выводом данных в ваших Java-программах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤷‍♂4🔥21👏1
class Point {
private final int x, y;
private final String name;

Point(int x, int y) {
this.x = x;
this.y = y;
name = makeName();
}

protected String makeName() {
return "[" + x + "," + y + "]";
}

public final String toString() {
return name;
}
}

public class ColorPoint extends Point {
private final String color;

ColorPoint(int x, int y, String color) {
super(x, y);
this.color = color;
}

protected String makeName() {
return super.makeName() + ":" + color;
}

public static void main(String[] args) {
System.out.println(new ColorPoint(4, 2, "red"));
}
}
👍1
👍4🤯4👎1😱1🎉1
😁38🔥2🤣2🤗2🤪2👎1
☕️Использование библиотеки Apache HttpClient

Apache HttpClient - это библиотека для выполнения HTTP запросов. Она предоставляет удобный API для создания и отправки HTTP запросов, а также обработки ответов.

Ниже приведены некоторые основные методы класса HttpClient и их краткое описание:

1. execute - метод для отправки HTTP запроса на указанный URL. Пример кода:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://example.com");
CloseableHttpResponse response = httpClient.execute(httpGet);


2. setHeader - метод для установки заголовков запроса. Пример кода:

httpGet.setHeader("Content-Type", "application/json");


3. setEntity - метод для установки тела запроса. Пример кода:

StringEntity entity = new StringEntity("{\"key\": \"value\"}");
httpPost.setEntity(entity);


4. getStatusCode - метод для получения кода ответа сервера. Пример кода:

int statusCode = response.getStatusLine().getStatusCode();


5. getEntity - метод для получения содержимого ответа. Пример кода:

String responseBody = EntityUtils.toString(response.getEntity());


Apache HttpClient позволяет выполнять различные типы запросов (GET, POST, PUT, DELETE и пр.) и работать с различными типами данных (текст, JSON, XML и пр.). Он также поддерживает работу с HTTPS, аутентификацию и установку параметров прокси.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍21
🌱 Spring Data REST - это проект в рамках экосистемы Spring, который позволяет автоматически создавать RESTful API на основе репозиториев Spring Data. Spring Data REST позволяет упростить создание API для работы с базами данных, предоставляя RESTful конечные точки для операций CRUD (Create, Read, Update, Delete) над данными.

Spring Data REST анализирует репозитории Spring Data и создает RESTful конечные точки для сущностей, которыми они управляют.

В Spring Data REST обеспечена поддержка различных типов запросов, включая запросы для сортировки, фильтрации, постраничного вывода и т.д.

В Spring Data REST так же встроена поддержка HATEOAS (Hypermedia as the Engine of Application State) - это архитектурный принцип, который позволяет клиентским приложениям навигировать по API, следуя гиперссылкам, предоставляемым сервером. Spring Data REST автоматически включает ссылки на связанные ресурсы в ответах API, что упрощает навигацию и использование API.

Предположим, у нас есть сущность User, которую мы хотим представить через API. Для этого нужно аннотировать репозиторий сущности User, аннотацией @RepositoryRestResource:

@RepositoryRestResource(path = "users")
public interface UserRepository extends JpaRepository<User, Long> {

}


Теперь Spring Data REST автоматически создаст RESTful конечные точки для управления сущностью User:

GET /users - Получить всех пользователей
POST /users - Создать нового пользователя
GET /users/{id} - Получить пользователя по ID
PUT /users/{id} - Обновить пользователя
DELETE /users/{id} - Удалить пользователя


Spring Data REST обеспечивает множество способов настройки и расширения поведения API. Разработчики могут настраивать URL-адреса, форматирование ответов, права доступа и многое другое, используя различные аннотации и конфигурационные параметры.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥2
☕️Использование библиотеки Apache POI

Apache POI (Poor Obfuscation Implementation) - это библиотека для работы с файлами Microsoft Office, такими как Excel, Word и PowerPoint. Она позволяет создавать, изменять и читать документы в форматах XLS, XLSX, DOC, DOCX, PPT и других.

Основные классы, которые используются для работы с файлами Excel в Apache POI:

1. HSSFWorkbook и XSSFWorkbook - используются для работы с файлами Excel в форматах .xls и .xlsx соответственно.
2. HSSFSheet и XSSFSheet - представляют собой листы в Excel файле.
3. HSSFRow и XSSFRow - представляют строки в Excel файле.
4. HSSFCell и XSSFCell - представляют ячейки в Excel файле.

Пример создания нового Excel файла и запись в него данных с использованием Apache POI:


import org.apache.poi.ss.usermodel.*;

public class ExcelWriter {
public static void main(String[] args) {
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("Sheet1");

Row headerRow = sheet.createRow(0);
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("Name");

Row dataRow = sheet.createRow(1);
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue("John Doe");

try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
wb.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
}
}
}

⚙️В этом примере создается новый Excel файл с именем "workbook.xlsx" и записывается одна строка данных. После выполнения программы в папке проекта будет создан файл "workbook.xlsx" с данными "Name" и "John Doe" в первой колонке.

Apache POI также предоставляет методы для чтения и изменения существующих Excel файлов, форматирования ячеек, добавления графиков и других операций над документами Microsoft Office.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3👏21
class Cache {
private static int sum = 0;

static {
initializeIfNecessary();
}

public static int getSum() {
initializeIfNecessary();
return sum;
}

private static boolean initialized = false;

private static synchronized void initializeIfNecessary() {
if (!initialized) {
for (int i = 0; i < 5; i++)
sum += i;
initialized = true;
}
}
}

class Client {
public static void main(String[] args) {
System.out.println(Cache.getSum());
}
}
👍5👎2
Что выведет код?
Anonymous Quiz
16%
0
37%
10
19%
20
28%
ошибка компиляции
☕️Использование библиотеки Tomcat

Apache Tomcat - это веб-сервер и контейнер сервлетов, который позволяет запускать Java-сервлеты и JSP-страницы. Он является одним из самых популярных и распространенных контейнеров сервлетов в мире Java.


Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
tomcat.addWebapp("/myapp", new File("src/main/webapp/").getAbsolutePath());
tomcat.addServlet("/myservlet", "MyServlet", MyServlet.class.getName());
tomcat.start();


Зависимости:

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>11.0.0-M18</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>11.0.0-M18</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>11.0.0-M18</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>11.0.0-M18</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>11.0.0-M18</version>
</dependency>
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍21
☕️Использование библиотеки Swing/AWT

Swing и AWT — это библиотеки пользовательского интерфейса для создания графических приложений на языке Java. Swing является более современной и улучшенной версией AWT, предоставляя более широкий функционал и возможности для разработчиков.

Ниже приведены некоторые основные методы библиотек Swing/AWT, их описание и соответствующий код:

1. Создание окна:
AWT:

Frame frame = new Frame("Название окна");
frame.setSize(400, 300);
frame.setVisible(true);


Swing:

JFrame frame = new JFrame("Название окна");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);


2. Добавление компонентов на панель:
AWT:

Button button = new Button("Нажми меня");
frame.add(button);


Swing:

JButton button = new JButton("Нажми меня");
frame.add(button);


3. Создание текстового поля:
AWT:

TextField textField = new TextField("Введите текст");
frame.add(textField);


Swing:

JTextField textField = new JTextField("Введите текст");
frame.add(textField);


4. Добавление обработчика событий:
AWT/Swing:

button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Кнопка была нажата");
}
});


⚙️Это только небольшая часть методов, доступных в библиотеках Swing/AWT. Они могут быть использованы для создания различных элементов интерфейса, управления компонентами и обработки событий. Обе библиотеки предоставляют обширные возможности, позволяя создавать красивые и функциональные графические приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Метод clone() класса Object

Метод clone() в Java используется для создания копии объекта. Он определён в классе java.lang.Object и по умолчанию выполняет поверхностное копирование объекта. Это означает, что он создает новый объект, который содержит те же значения полей, что и исходный объект, но сами поля являются ссылками на те же объекты, что и в исходном объекте. Таким образом, изменения в полях объекта, на который производится клонирование, также могут отразиться на его клоне, если эти поля сами по себе являются изменяемыми объектами.

Простое использование метода clone() выглядит так:

public class MyClass implements Cloneable {
private int value;

// Конструкторы и методы класса

@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}


Чтобы использовать метод clone(), класс должен реализовывать интерфейс Cloneable, иначе при попытке клонирования будет выбрасываться исключение CloneNotSupportedException.

Использование метода clone() может быть не всегда удобным или эффективным. В некоторых случаях рекомендуется использовать альтернативные методы, такие как конструктор копирования или методы фабрики. Это обычно более явные способы создания копий объектов, и они могут быть более удобными и безопасными с точки зрения проектирования программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥21🤯1
😁32🤣161❤‍🔥1🔥1
☕️Использование библиотеки Quartz

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

Основные методы библиотеки Quartz:

1. SchedulerFactory - фабрика создания планировщика задач.
Пример кода:

SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();


2. Job - интерфейс, представляющий выполняемую задачу.
Пример кода:

public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) {
System.out.println("Hello, Quartz!");
}
}


3. JobDetail - содержит информацию о задаче, такую как класс задачи, идентификатор задачи и другие свойства.
Пример кода:

JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.build();


4. Trigger - позволяет указать расписание выполнения задачи, такое как время запуска, повторяемость и другие параметры.
Пример кода:

Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();


5. Scheduler - основной класс для управления планированием задач.
Пример кода:

scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1👏1