Java for Beginner
677 subscribers
546 photos
155 videos
12 files
836 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Вопросы с собеседования 👩‍💻

Какой тип данных используется для хранения целых чисел?
Anonymous Quiz
4%
float
94%
int
0%
double
2%
char
Получение информации о методах.

Работа с параметрами методов

getParameterTypes()
Возвращает массив Class объектов, представляющих типы параметров метода.

Пример:
Class<?> clazz = String.class;
Method method = clazz.getMethod("substring", int.class, int.class);
Class<?>[] parameterTypes = method.getParameterTypes();
for (Class<?> paramType : parameterTypes) {
System.out.println(paramType.getName()); // Вывод: int, int
}


getReturnType()
Возвращает Class объект, представляющий тип возвращаемого значения метода.

Пример:
Class<?> returnType = method.getReturnType();
System.out.println(returnType.getName()); // Вывод: java.lang.String


Пример получения информации о параметрах и возвращаемом типе
import java.lang.reflect.Method;

public class Main {
public static void main(String[] args) throws NoSuchMethodException {
Class<?> clazz = String.class;

// Получение метода substring(int, int)
Method method = clazz.getMethod("substring", int.class, int.class);

// Получение типов параметров
System.out.println("Parameter Types:");
Class<?>[] parameterTypes = method.getParameterTypes();
for (Class<?> paramType : parameterTypes) {
System.out.println(paramType.getName());
}

// Получение возвращаемого типа
System.out.println("\nReturn Type:");
Class<?> returnType = method.getReturnType();
System.out.println(returnType.getName());
}
}


Пример с приватным методом
import java.lang.reflect.Method;

class MyClass {
private void myPrivateMethod(int a, String b) {
System.out.println("Private Method: " + a + ", " + b);
}
}

public class Main {
public static void main(String[] args) throws NoSuchMethodException {
Class<?> clazz = MyClass.class;

// Получение приватного метода
Method method = clazz.getDeclaredMethod("myPrivateMethod", int.class, String.class);

// Получение типов параметров
System.out.println("Parameter Types:");
Class<?>[] parameterTypes = method.getParameterTypes();
for (Class<?> paramType : parameterTypes) {
System.out.println(paramType.getName()); // Вывод: int, java.lang.String
}

// Получение возвращаемого типа
System.out.println("\nReturn Type:");
Class<?> returnType = method.getReturnType();
System.out.println(returnType.getName()); // Вывод: void
}
}


#Java #Training #Medium #Reflection_API #Method
Всем добрейшего субботнего утра! 🔆

Ну как, настроены на выходные?

Очень хотел продолжить запись по созданию сервиса на неделе, но что-то много задач по работе навалилось и теперь только завтра 😉

Так что жду 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!

Сегодня в 16:00 по МСК вновь жду Вас на встречу, где мы продолжим писать сервис доставки товаров!) 😮

Приходите! ✌️
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring.
Пишем сервис доставки. Встречи от 02 и 09.01.2025

Запись встречи -
YOUTUBE
RUTUBE

В целях тренировки пальцев и сознания, начали писать тренировочный сервис доставки без подготовки. Долго, с гуглом и ошибками )))

Пригодится тем кто хочет написать что-то подобное сам и готов посидеть, посмотреть на процесс написания, построения логики и размышления))

Что можно немного изучить в процессе:
— Построение бизнес логики, намапливание ее на создание сущностей, репозиториев и сервисов.
— Простая работа со спрингом, простые аннотации и зависимости.
— Проверка работоспособности через Postman


Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!

Всем хорошего настроения и терпения при просмотре! 🍸
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Конструктор и как его получить

Конструктор — это специальный метод в 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
Что выведет код?

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
Варианты ответа:
Anonymous Quiz
5%
0 1 2
78%
0 1 2 3 4
7%
StackOverflow
10%
RuntimeException
Когда используешь незнакомые плагины 🤪 😁

https://t.me/Java_for_beginner_dev

#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩‍💻

Какой модификатор доступа делает метод доступным только внутри пакета?
Anonymous Quiz
11%
public
23%
private
35%
default
32%
protected
Работа с параметрами конструкторов

Когда мы получаем конструктор с помощью рефлексии, часто нужно узнать, какие параметры он принимает. Для этого используется метод 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, и бог знает каких еще...🤦‍♂️
Все это - собранный по крупицам многолетний опыт, который мне, да и большинству из нас еще предстоит заработать.

Но и относиться к этому как к ИСТИНЕ принесенной мессией, тоже не стоит. Уверен, что в среде опытных разработчиков, нашли бы что возразить на некоторые доводы, опять же потому - что все это плоды опыта)))


В целом, я благодарен за критику. Я знаю, что пишу как новичок, каким по сути и являюсь 🤪, но я обещаю учиться дальше и стараться, чего и Вам желаю))

😎
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM