Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Spring поддерживает три основных типа инъекций:
1. Constructor Injection — зависимости передаются через конструктор.
2. Setter Injection — зависимости устанавливаются через setter-методы.
3. Field Injection — зависимости внедряются напрямую в поля класса с помощью аннотаций.
Пример:
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired // Constructor Injection
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
Конструкторное внедрение рекомендуется как наиболее предпочтительный способ, так как оно обеспечивает неизменяемость и упрощает тестирование.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
new используется для создания нового объекта. При вызове new выделяется память для объекта, вызывается конструктор класса для инициализации этого объекта, и возвращается ссылка на созданный объект.
ClassName obj = new ClassName();
В данном примере
new ClassName() создает объект типа ClassName. Конструктор ClassName() вызывается для инициализации объекта, а ссылка на этот объект присваивается переменной obj.Оператор
new также используется для создания массивов:
int[] arr = new int[10];
Здесь создается массив из 10 элементов типа
int, и ссылка на этот массив присваивается переменной arr.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Comparator<String> lengthComparator = (s1, s2) -> s1.length() - s2.length();
Здесь создае
тся Comparator, который сравнивает строки по их длине. Лямбда-выражение принимает две строки и возвращает разницу их длин.
Comparator часто используется в методах сортировки:
List<String> list = Arrays.asList("apple", "banana", "cherry");
list.sort(lengthComparator);
В этом примере список строк сортируется по длине с использованием созданного
Comparator.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
public void divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("Divisor cannot be zero");
}
System.out.println(a / b);
}
В примере выбрасывается RuntimeException, если делитель равен нулю. Такие исключения обычно указывают на ошибки в логике программы.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Java собеседования
👍7❤1
void, если они не возвращают значение, или с указанием типа возвращаемого значения.
int add(int a, int b) {
return a + b;
}
Функции могут принимать параметры и возвращать результат. Они используются для организации кода, устранения дублирования и улучшения читаемости.
void printMessage(String message) {
System.out.println(message);
}
Функции могут быть статическими, если принадлежат классу, а не экземпляру, и вызываться без создания объекта.
class MathUtils {
static int multiply(int a, int b) {
return a * b;
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
HashSet и TreeSet — это реализации интерфейса Set, но с разными характеристиками. HashSet хранит элементы в хэш-таблице, обеспечивая вставку и поиск за O(1) в среднем случае. Порядок элементов не гарантируется.
Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
TreeSet использует красно-черное дерево для хранения элементов, обеспечивая вставку и поиск за O(log n). Элементы хранятся в отсортированном порядке.
Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
public void methodA() {
methodB(); // Вызов methodB
}
public void methodB() {
methodC(); // Вызов methodC
}
public void methodC() {
throw new RuntimeException("Error in methodC"); // Исключение
}
При возникновении исключения стек вызовов показывает цепочку методов, которые привели к ошибке. Например, если исключение произошло в
methodC, стек будет выглядеть так:
methodC
methodB
methodA
Это помогает определить, где именно возникла ошибка и как программа дошла до этого момента.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
default и static в интерфейсах позволяют добавлять реализацию методов непосредственно в интерфейс. Это расширяет функциональность интерфейсов без нарушения обратной совместимости.
interface Example {
void abstractMethod();
default void defaultMethod() {
System.out.println("Default implementation");
}
static void staticMethod() {
System.out.println("Static method in interface");
}
}
Метод
default предоставляет реализацию по умолчанию, которую можно переопределить в классах. Метод static позволяет добавлять утилитарные методы, которые вызываются через интерфейс, а не через экземпляр класса. Это упрощает расширение интерфейсов и уменьшает дублирование кода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
if-else используются для выполнения кода на основе условий. Основные правила включают: - Условие в
if должно быть булевым выражением. - Блок
else не обязателен и выполняется, если условие в if ложно. - Можно использовать
else if для проверки нескольких условий последовательно.
int x = 10;
if (x > 0) {
// выполняется, если x больше 0
} else if (x < 0) {
// выполняется, если x меньше 0
} else {
// выполняется, если x равно 0
}
- Фигурные скобки
{} обязательны, если блок содержит более одной строки кода. - Для улучшения читаемости рекомендуется избегать вложенных
if-else и использовать ранний возврат или тернарные операторы, где это уместно.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
class Animal {
void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark");
}
}
Animal myAnimal = new Dog();
myAnimal.sound(); // Выведет "Bark"
В этом примере метод
sound() переопределен в классе Dog. При вызове myAnimal.sound() выполняется версия метода из класса Dog, несмотря на то, что ссылка имеет тип Animal. Это демонстрирует полиморфизм во время выполнения.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2