Всем привет! ✊
Сегодня в 16:00 по МСК вновь жду Вас на встречу, где мы продолжим писать сервис доставки товаров!)😮
Приходите!✌️
Сегодня в 16:00 по МСК вновь жду Вас на встречу, где мы продолжим писать сервис доставки товаров!)
Приходите!
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring.
Пишем сервис доставки. Встречи от 02 и 09.01.2025
Запись встречи -
YOUTUBE
RUTUBE
В целях тренировки пальцев и сознания, начали писать тренировочный сервис доставки без подготовки. Долго, с гуглом и ошибками )))
Пригодится тем кто хочет написать что-то подобное сам и готов посидеть, посмотреть на процесс написания, построения логики и размышления))
Что можно немного изучить в процессе:
— Построение бизнес логики, намапливание ее на создание сущностей, репозиториев и сервисов.
— Простая работа со спрингом, простые аннотации и зависимости.
— Проверка работоспособности через Postman
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Всем хорошего настроения и терпения при просмотре!🍸
Пишем сервис доставки. Встречи от 02 и 09.01.2025
Запись встречи -
YOUTUBE
RUTUBE
В целях тренировки пальцев и сознания, начали писать тренировочный сервис доставки без подготовки. Долго, с гуглом и ошибками )))
Пригодится тем кто хочет написать что-то подобное сам и готов посидеть, посмотреть на процесс написания, построения логики и размышления))
Что можно немного изучить в процессе:
— Построение бизнес логики, намапливание ее на создание сущностей, репозиториев и сервисов.
— Простая работа со спрингом, простые аннотации и зависимости.
— Проверка работоспособности через Postman
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Всем хорошего настроения и терпения при просмотре!
Please open Telegram to view this post
VIEW IN TELEGRAM
Конструктор и как его получить
Конструктор — это специальный метод в Java, который вызывается при создании объекта класса. Он используется для инициализации объекта, установки начальных значений полей и выполнения других подготовительных действий. Конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа.
Пример простого конструктора:
В Java можно получить информацию о конструкторах класса с помощью рефлексии. Рефлексия — это механизм, позволяющий анализировать и изменять структуру классов, методов, полей и конструкторов во время выполнения программы.
Для работы с конструкторами используется класс java.lang.reflect.Constructor. Мы можем получить все конструкторы класса или конкретный конструктор с определенными параметрами.
Методы для получения конструкторов
getConstructors()
Этот метод возвращает массив всех публичных конструкторов класса. Конструкторы, объявленные с модификатором доступа private, protected или без модификатора (package-private), не будут включены в результат.
Пример:
Вывод:
Плюсы:
Простота использования.
Возвращает только публичные конструкторы, что может быть полезно для безопасности.
Минусы:
Не возвращает приватные или защищенные конструкторы.
getDeclaredConstructors()
Этот метод возвращает массив всех конструкторов класса, включая приватные, защищенные и package-private. В отличие от getConstructors(), этот метод позволяет получить доступ ко всем конструкторам, независимо от их модификатора доступа.
Пример:
Вывод:
Плюсы:
Возвращает все конструкторы, включая приватные.
Полезен для глубокого анализа класса.
Минусы:
Может потребовать дополнительных действий для работы с приватными конструкторами (например, вызов setAccessible(true)).
Нюансы использования
Доступ к приватным конструкторам: Если вы хотите использовать приватный конструктор, вам нужно вызвать метод setAccessible(true) на объекте Constructor, чтобы обойти проверку доступа.
Безопасность: Использование рефлексии может нарушить инкапсуляцию, поэтому будьте осторожны при работе с приватными конструкторами.
#Java #Training #Medium #Reflection_API #Constructor
Конструктор — это специальный метод в Java, который вызывается при создании объекта класса. Он используется для инициализации объекта, установки начальных значений полей и выполнения других подготовительных действий. Конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа.
Пример простого конструктора:
public class Person {
private String name;
private int age;
// Конструктор
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
В Java можно получить информацию о конструкторах класса с помощью рефлексии. Рефлексия — это механизм, позволяющий анализировать и изменять структуру классов, методов, полей и конструкторов во время выполнения программы.
Для работы с конструкторами используется класс java.lang.reflect.Constructor. Мы можем получить все конструкторы класса или конкретный конструктор с определенными параметрами.
Методы для получения конструкторов
getConstructors()
Этот метод возвращает массив всех публичных конструкторов класса. Конструкторы, объявленные с модификатором доступа private, protected или без модификатора (package-private), не будут включены в результат.
Пример:
import java.lang.reflect.Constructor;
public class Main {
public static void main(String[] args) {
try {
// Получаем класс Person
Class<?> personClass = Class.forName("Person");
// Получаем все публичные конструкторы
Constructor<?>[] publicConstructors = personClass.getConstructors();
// Выводим информацию о конструкторах
for (Constructor<?> constructor : publicConstructors) {
System.out.println("Constructor: " + constructor);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Вывод:
Constructor: public Person(java.lang.String,int)
Плюсы:
Простота использования.
Возвращает только публичные конструкторы, что может быть полезно для безопасности.
Минусы:
Не возвращает приватные или защищенные конструкторы.
getDeclaredConstructors()
Этот метод возвращает массив всех конструкторов класса, включая приватные, защищенные и package-private. В отличие от getConstructors(), этот метод позволяет получить доступ ко всем конструкторам, независимо от их модификатора доступа.
Пример:
import java.lang.reflect.Constructor;
public class Main {
public static void main(String[] args) {
try {
// Получаем класс Person
Class<?> personClass = Class.forName("Person");
// Получаем все конструкторы (включая приватные)
Constructor<?>[] allConstructors = personClass.getDeclaredConstructors();
// Выводим информацию о конструкторах
for (Constructor<?> constructor : allConstructors) {
System.out.println("Constructor: " + constructor);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Вывод:
Constructor: public Person(java.lang.String,int)
Constructor: private Person()
Плюсы:
Возвращает все конструкторы, включая приватные.
Полезен для глубокого анализа класса.
Минусы:
Может потребовать дополнительных действий для работы с приватными конструкторами (например, вызов setAccessible(true)).
Нюансы использования
Доступ к приватным конструкторам: Если вы хотите использовать приватный конструктор, вам нужно вызвать метод setAccessible(true) на объекте Constructor, чтобы обойти проверку доступа.
Безопасность: Использование рефлексии может нарушить инкапсуляцию, поэтому будьте осторожны при работе с приватными конструкторами.
#Java #Training #Medium #Reflection_API #Constructor
Что выведет код?
#Tasks
public class Task100225 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
if (i == 6) {
continue;
}
System.out.print(i + " ");
}
}
}
#Tasks
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Какой модификатор доступа делает метод доступным только внутри пакета?
Какой модификатор доступа делает метод доступным только внутри пакета?
Anonymous Quiz
11%
public
23%
private
35%
default
32%
protected
Работа с параметрами конструкторов
Когда мы получаем конструктор с помощью рефлексии, часто нужно узнать, какие параметры он принимает. Для этого используется метод getParameterTypes(), который возвращает массив объектов Class<?>, представляющих типы параметров конструктора.
Пример:
Вывод:
Как использовать конструктор с параметрами
После получения конструктора и информации о его параметрах, мы можем создать новый экземпляр класса с помощью метода newInstance(). Если конструктор принимает параметры, их нужно передать в newInstance().
Пример:
Вывод:
Плюсы и минусы работы с параметрами конструкторов
Плюсы:
Гибкость: можно создавать объекты с разными параметрами во время выполнения.
Возможность анализа и использования конструкторов, которые не известны на этапе компиляции.
Минусы:
Сложность: работа с рефлексией требует больше кода и внимания к деталям.
Ошибки времени выполнения: если передать неправильные параметры, возникнет исключение.
Нюансы использования
Проверка типов: Убедитесь, что типы параметров, передаваемых в newInstance(), соответствуют ожидаемым типам конструктора.
Обработка исключений: Метод newInstance() может выбрасывать исключения, такие как InstantiationException, IllegalAccessException, IllegalArgumentException и InvocationTargetException. Их нужно обрабатывать.
#Java #Training #Medium #Reflection_API #Constructor
Когда мы получаем конструктор с помощью рефлексии, часто нужно узнать, какие параметры он принимает. Для этого используется метод getParameterTypes(), который возвращает массив объектов Class<?>, представляющих типы параметров конструктора.
Пример:
import java.lang.reflect.Constructor;
public class Main {
public static void main(String[] args) {
try {
// Получаем класс Person
Class<?> personClass = Class.forName("Person");
// Получаем все конструкторы
Constructor<?>[] constructors = personClass.getDeclaredConstructors();
// Анализируем параметры каждого конструктора
for (Constructor<?> constructor : constructors) {
System.out.println("Constructor: " + constructor);
// Получаем типы параметров
Class<?>[] parameterTypes = constructor.getParameterTypes();
System.out.println("Parameter types:");
for (Class<?> paramType : parameterTypes) {
System.out.println(" - " + paramType.getName());
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Вывод:
Constructor: public Person(java.lang.String,int)
Parameter types:
- java.lang.String
- int
Constructor: private Person()
Parameter types:
Как использовать конструктор с параметрами
После получения конструктора и информации о его параметрах, мы можем создать новый экземпляр класса с помощью метода newInstance(). Если конструктор принимает параметры, их нужно передать в newInstance().
Пример:
import java.lang.reflect.Constructor;
public class Main {
public static void main(String[] args) {
try {
// Получаем класс Person
Class<?> personClass = Class.forName("Person");
// Получаем конструктор с параметрами (String, int)
Constructor<?> constructor = personClass.getConstructor(String.class, int.class);
// Создаем экземпляр класса с параметрами
Object personInstance = constructor.newInstance("John", 30);
// Выводим результат
System.out.println("Person created: " + personInstance);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Вывод:
Person created: Person@<hashcode>
Плюсы и минусы работы с параметрами конструкторов
Плюсы:
Гибкость: можно создавать объекты с разными параметрами во время выполнения.
Возможность анализа и использования конструкторов, которые не известны на этапе компиляции.
Минусы:
Сложность: работа с рефлексией требует больше кода и внимания к деталям.
Ошибки времени выполнения: если передать неправильные параметры, возникнет исключение.
Нюансы использования
Проверка типов: Убедитесь, что типы параметров, передаваемых в newInstance(), соответствуют ожидаемым типам конструктора.
Обработка исключений: Метод newInstance() может выбрасывать исключения, такие как InstantiationException, IllegalAccessException, IllegalArgumentException и InvocationTargetException. Их нужно обрабатывать.
#Java #Training #Medium #Reflection_API #Constructor
Не могу не опубликовать.
Вот первый, за все время существования Youtube канала, наверно наиболее конструктивный комментарий, который показывает, что всегда есть куда стремиться.
Это явно показывающий пример того, что такое программирование на самом деле. Всему, что описал этот человек Вас не научат на курсах Мишустина, OTUS, и бог знает каких еще...🤦♂️
Все это - собранный по крупицам многолетний опыт, который мне, да и большинству из нас еще предстоит заработать.
Но и относиться к этому как к ИСТИНЕ принесенной мессией, тоже не стоит. Уверен, что в среде опытных разработчиков, нашли бы что возразить на некоторые доводы, опять же потому - что все это плоды опыта)))
В целом, я благодарен за критику. Я знаю, что пишу как новичок, каким по сути и являюсь🤪 , но я обещаю учиться дальше и стараться, чего и Вам желаю))
😎
Вот первый, за все время существования Youtube канала, наверно наиболее конструктивный комментарий, который показывает, что всегда есть куда стремиться.
Это явно показывающий пример того, что такое программирование на самом деле. Всему, что описал этот человек Вас не научат на курсах Мишустина, OTUS, и бог знает каких еще...
Все это - собранный по крупицам многолетний опыт, который мне, да и большинству из нас еще предстоит заработать.
Но и относиться к этому как к ИСТИНЕ принесенной мессией, тоже не стоит. Уверен, что в среде опытных разработчиков, нашли бы что возразить на некоторые доводы, опять же потому - что все это плоды опыта)))
В целом, я благодарен за критику. Я знаю, что пишу как новичок, каким по сути и являюсь
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание объектов через Reflection
Reflection (отражение) в Java — это механизм, который позволяет анализировать и изменять поведение классов, методов, полей и других элементов программы во время выполнения. Это мощный инструмент, но он требует осторожности, так как может привести к снижению производительности и усложнению кода.
1. Использование Class.newInstance() (устаревший метод)
Метод Class.newInstance() был одним из первых способов создания объектов через Reflection. Он позволяет создать экземпляр класса, используя его пустой конструктор (конструктор без аргументов).
Как это работает:
Вы получаете объект Class с помощью Class.forName("полное.имя.класса").
Затем вызываете метод newInstance(), который создает объект.
Пример кода:
Плюсы:
Простота использования.
Не требует явного указания конструктора.
Минусы:
Устаревший метод (начиная с Java 9, он считается deprecated).
Работает только с классами, у которых есть публичный конструктор без аргументов.
Не поддерживает передачу параметров в конструктор.
Под капотом:
Метод newInstance() внутри вызывает getDeclaredConstructor() для получения конструктора без аргументов, а затем вызывает Constructor.newInstance().
2. Использование Constructor.newInstance()
Этот метод является более гибким и современным способом создания объектов через Reflection. Он позволяет использовать любой конструктор, включая те, которые принимают аргументы.
Как это работает:
Вы получаете объект Class.
С помощью метода getDeclaredConstructor() получаете конкретный конструктор.
Вызываете метод newInstance() у объекта Constructor, передавая необходимые аргументы.
Пример кода:
Плюсы:
Поддерживает конструкторы с параметрами.
Более гибкий и мощный, чем Class.newInstance().
Не deprecated.
Минусы:
Требует больше кода для получения конструктора.
Может выбросить исключения, если конструктор недоступен или параметры не совпадают.
Под капотом:
Метод newInstance() внутри вызывает нативный метод, который выделяет память для объекта и инициализирует его с помощью переданного конструктора.
#Java #Training #Medium #Reflection_API #Constructor_newInstance
Reflection (отражение) в Java — это механизм, который позволяет анализировать и изменять поведение классов, методов, полей и других элементов программы во время выполнения. Это мощный инструмент, но он требует осторожности, так как может привести к снижению производительности и усложнению кода.
1. Использование Class.newInstance() (устаревший метод)
Метод Class.newInstance() был одним из первых способов создания объектов через Reflection. Он позволяет создать экземпляр класса, используя его пустой конструктор (конструктор без аргументов).
Как это работает:
Вы получаете объект Class с помощью Class.forName("полное.имя.класса").
Затем вызываете метод newInstance(), который создает объект.
Пример кода:
public class MyClass {
public MyClass() {
System.out.println("Объект MyClass создан!");
}
}
public class ReflectionExample {
public static void main(String[] args) {
try {
// Получаем объект Class
Class<?> clazz = Class.forName("MyClass");
// Создаем объект через newInstance()
MyClass obj = (MyClass) clazz.newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
Плюсы:
Простота использования.
Не требует явного указания конструктора.
Минусы:
Устаревший метод (начиная с Java 9, он считается deprecated).
Работает только с классами, у которых есть публичный конструктор без аргументов.
Не поддерживает передачу параметров в конструктор.
Под капотом:
Метод newInstance() внутри вызывает getDeclaredConstructor() для получения конструктора без аргументов, а затем вызывает Constructor.newInstance().
2. Использование Constructor.newInstance()
Этот метод является более гибким и современным способом создания объектов через Reflection. Он позволяет использовать любой конструктор, включая те, которые принимают аргументы.
Как это работает:
Вы получаете объект Class.
С помощью метода getDeclaredConstructor() получаете конкретный конструктор.
Вызываете метод newInstance() у объекта Constructor, передавая необходимые аргументы.
Пример кода:
public class MyClass {
private String name;
public MyClass(String name) {
this.name = name;
System.out.println("Объект MyClass создан с именем: " + name);
}
}
public class ReflectionExample {
public static void main(String[] args) {
try {
// Получаем объект Class
Class<?> clazz = Class.forName("MyClass");
// Получаем конструктор с параметром String
Constructor<?> constructor = clazz.getDeclaredConstructor(String.class);
// Создаем объект через newInstance()
MyClass obj = (MyClass) constructor.newInstance("John");
} catch (ClassNotFoundException | NoSuchMethodException | InstantiationException |
IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
Плюсы:
Поддерживает конструкторы с параметрами.
Более гибкий и мощный, чем Class.newInstance().
Не deprecated.
Минусы:
Требует больше кода для получения конструктора.
Может выбросить исключения, если конструктор недоступен или параметры не совпадают.
Под капотом:
Метод newInstance() внутри вызывает нативный метод, который выделяет память для объекта и инициализирует его с помощью переданного конструктора.
#Java #Training #Medium #Reflection_API #Constructor_newInstance
Что выведет код?
#Tasks
public class Task110225 {
public static void main(String[] args) {
String s = "hello";
switch (s) {
case "hello":
System.out.print("A");
case "world":
System.out.print("B");
default:
System.out.print("C");
}
}
}
#Tasks
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Что делает оператор break?
Что делает оператор break?
Anonymous Quiz
2%
Перехватывает исключения
4%
Возвращает значение из метода
0%
Продолжает выполнение цикла
94%
Завершает выполнение цикла