Что такое Reflection в Java и как он работает?
Пример
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws Exception {
Class<?> clazz = Person.class;
System.out.println("Поля:");
for (Field f : clazz.getDeclaredFields())
System.out.println(" - " + f.getName());
System.out.println("\nМетоды:");
for (Method m : clazz.getDeclaredMethods())
System.out.println(" - " + m.getName());
Person p = new Person("Alice");
Method sayHello = clazz.getDeclaredMethod("sayHello");
sayHello.invoke(p); // вызов приватного метода через Reflection
}
}
class Person {
private String name;
public Person(String name) { this.name = name; }
private void sayHello() { System.out.println("Привет, " + name); }
}
Ответ
Reflection (рефлексия) позволяет анализировать и изменять поведение классов во время выполнения. С её помощью можно:
— получать информацию о классах, полях и методах
— вызывать методы и изменять поля динамически
— создавать экземпляры классов без new
📌 Минусы:
— снижает производительность,
— нарушает инкапсуляцию,
— может вызывать ошибки безопасности.
Reflection активно используется в фреймворках (Spring, Hibernate, JUnit) для внедрения зависимостей, сериализации и динамического вызова кода
Please open Telegram to view this post
VIEW IN TELEGRAM
class Parent {
static void print() {
System.out.print("Parent ");
}
void show() {
System.out.print("ParentShow ");
}
}
class Child extends Parent {
static void print() {
System.out.print("Child ");
}
@Override
void show() {
System.out.print("ChildShow ");
}
}
public class Main {
public static void main(String[] args) {
Parent obj = new Child();
obj.print();
obj.show();
Child child = new Child();
child.print();
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Что выведет код?
Anonymous Quiz
46%
Parent ChildShow Child
28%
Child ChildShow Child
8%
Parent ParentShow Parent
18%
Ошибка компиляции
Вечное противостояние и споры: что выбрать? Kotlin или Java? Какой язык актуальнее в 2026 году?
Автор расскажет о личном опыте работы, приведет примеры различных задач, и проведет прямые сравнительные тесты.
А если вам лень читать, победитель -
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
peek() — это промежуточный метод стримов, который позволяет выполнить произвольное действие над каждым элементом без изменения самих элементов. Классический use case: отладка пайплайнов, логирование, заполнение внешних коллекций.
import java.util.*;
import java.util.stream.*;
public class PeekExample {
public static void main(String[] args) {
List<String> log = new ArrayList<>();
List<String> result = Stream.of("java", "python", "rust")
.peek(s -> System.out.println("До фильтра: " + s))
.filter(s -> s.length() > 3)
.peek(s -> System.out.println("После фильтра: " + s))
.map(String::toUpperCase)
.peek(log::add) // побочный эффект
.collect(Collectors.toList());
System.out.println("Результат: " + result);
System.out.println("Лог: " + log);
}
}
Особенно полезен при откладке длинных стрим-пайплайнов, логировании промежуточных этапов, сборке метрик или статистики, побочных эффектах в тестовых сценариях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
public class Main {
static int x = 0;
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) x++;
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) x++;
});
t1.start();
t2.start();
Thread.sleep(100);
System.out.print(x);
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?
Anonymous Quiz
21%
А) 2000
45%
В) Меньше или равное 2000
18%
С) Ошибка компиляции
15%
D) 0
Phaser — это продвинутый синхронизатор из
java.util.concurrent, который позволяет потокам координироваться по фазам выполнения.В отличие от CountDownLatch и CyclicBarrier, он гибче: количество участников можно динамически добавлять и убирать.
• Поддерживает несколько фаз
• Гибко управляет количеством потоков
• Удобен для пошаговых алгоритмов
import java.util.concurrent.Phaser;
public class Main {
public static void main(String[] args) {
Phaser phaser = new Phaser(3);
Runnable task = () -> {
System.out.println(Thread.currentThread().getName() + " — фаза 1");
phaser.arriveAndAwaitAdvance();
System.out.println(Thread.currentThread().getName() + " — фаза 2");
};
new Thread(task).start();
new Thread(task).start();
new Thread(task).start();
}
}
👀 Phaser особенно полезен для задач с несколькими этапами синхронизации — например, симуляций, параллельных вычислений или координации батчевых операций
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣11👍1
Автор разбирает, почему внедрение AI может снижать продуктивность, раздувать время ревью и плодить уязвимости. И главное — как это лечить не магическими промптами, а инженерным пайплайном: SDD, TDD, узкие AI-ревьюеры, property-based testing и связка LLM с формальными анализаторами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
class Parent {
static String show() {
return "Parent";
}
String print() {
return show();
}
}
class Child extends Parent {
static String show() {
return "Child";
}
}
public class Main {
public static void main(String[] args) {
Parent p = new Child();
System.out.println(p.print());
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🤔2🔥1