Что произойдёт, если в блоке finally указать return?
Пример
public class Main {
public static void main(String[] args) {
System.out.println(testMethod()); // ➔ 10
}
static int testMethod() {
try {
return 5;
} finally {
return 10;
}
}
}Ответ
Если в блоке finally указать оператор return, он перекроет любое возвращаемое значение из блока try или catch. Это считается антипаттерном, так как делает поведение метода непредсказуемым.
Даже если в блоке try или catch вызывается return, исключение или break, блок finally всегда выполнится, и если в нём есть свой return, он заменит возвращаемое значение
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍6❤1
Pattern Matching для instanceof — упрощает проверку типов и автоматическое приведение объекта к нужному классу.
После проверки через instanceof переменная автоматически становится нужного типа — без явного кастинга. Это сокращает код и уменьшает вероятность ошибок.
• Упрощает проверки типов
• Избавляет от явного приведения
• Делает код более читаемым
public class Main {
public static void main(String[] args) {
Object obj = "Hello, Java!";
if (obj instanceof String str) {
System.out.println("Длина строки: " + str.length()); // ➔ Длина строки: 13
}
}
}👀 Pattern Matching для instanceof упрощает работу с типами, особенно при проверке объектов на соответствие классу. Это полезно в логике обработки данных и при работе с полиморфными объектами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥2
В статье обсуждают, почему технические собеседования — это не пытка, а интеллектуальное удовольствие: Java-разработчик из Skillbox делится опытом и подходами к процессу.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2😁2🤔2
Ответ:
Anonymous Quiz
57%
Element: 42, Element: Hello
18%
Ошибка компиляции
5%
Element: T, Element: T
19%
42, Hello
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23
Чем отличается
== от .equals() в Java?Пример
public class Main {
public static void main(String[] args) {
String a = new String("hello");
String b = new String("hello");
System.out.println(a == b); // ➔ false
System.out.println(a.equals(b)); // ➔ true
}
}Ответ
Оператор == сравнивает ссылки на объекты, то есть проверяет, ссылаются ли переменные на один и тот же объект в памяти.
Метод .equals() сравнивает содержимое объектов. Классы, такие как String, переопределяют equals() так, чтобы сравнивать значения.
📌 Поэтому a == b может быть false, даже если строки идентичны по содержимому. Чтобы сравнивать содержимое, всегда используйте .equals() (или Objects.equals() для null-безопасности).
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡6❤2👍2
В современных версиях Java компилятор проверяет, чтобы switch по enum был исчерпывающим — то есть обрабатывал все возможные значения.
Если не покрыть все кейсы или не указать default, компилятор выдаст ошибку или предупреждение.
• Защита от забытых кейсов
• Безопаснее при расширении enum
• Явная обработка всех вариантов
enum Status {
NEW, IN_PROGRESS, DONE
}
public class Main {
public static void main(String[] args) {
Status status = Status.IN_PROGRESS;
switch (status) {
case NEW -> System.out.println("Создано");
case IN_PROGRESS -> System.out.println("В работе");
case DONE -> System.out.println("Завершено");
}
}
}👀 Исчерпывающий switch по enum особенно полезен в системах со строгими статусами или флагами — например, при описании состояний заказов, задач, соединений и других finite-state моделей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3❤1
Команда показывает, как в Spring Boot тестировать REST API через Amplicode, Docker Compose и подсказки от LLM. Интеграционные тесты — теперь почти как конструктор.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
😁28😭12
Можно ли вызвать
return изнутри try и при этом выполнить finally?Пример
public class Main {
public static void main(String[] args) {
System.out.println(test()); // ➔ Выполнен finally ➔ 5
}
static int test() {
try {
return 5;
} finally {
System.out.println("Выполнен finally");
}
}
}Ответ
Да, блок finally всегда выполняется, даже если в try есть return.
Это гарантирует, что важные действия (например, закрытие ресурсов) не будут пропущены.
📌 Даже при return, break, continue или выбрасывании исключения — finally обязательно сработает.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍9
try-with-resources — это конструкция, которая автоматически закрывает ресурсы (например, файлы, потоки), когда они больше не нужны. Она работает с любыми объектами, реализующими интерфейс
AutoCloseable.Не нужно вручную вызывать close() — Java сама закроет ресурс даже при исключении. Это делает код чище и безопаснее.
• Автоматически закрывает ресурсы
• Защищает от утечек памяти
• Упрощает работу с I/O и JDBC
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
System.out.println(reader.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
👀 try-with-resources особенно полезен при работе с файлами, сетевыми соединениями, базами данных и любыми ресурсами, которые нужно явно закрывать.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥4