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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
📌 Факт дня:

"А вы знали что... существует язык программирования под названием 'Brainfuck'?"

Этот язык был создан для того, чтобы показать, насколько минималистичным может быть язык программирования. Его синтаксис состоит всего из восьми символов! Попробуйте угадать, почему его так назвали.


Proof

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁1🤨1
Получение информации о методах.

Класс Method в Java является частью Reflection API и представляет собой метаинформацию о методах класса. С помощью этого класса можно получить информацию о методах, их параметрах, возвращаемых типах и аннотациях.

Что такое метод класса и как его получить

Метод класса — это блок кода, который выполняет определенную задачу.

В Java методы могут быть:
Публичными (public): доступны из любого класса.
Приватными (private): доступны только внутри класса.
Защищенными (protected): доступны внутри класса и его подклассов.
По умолчанию (без модификатора): доступны внутри пакета.


Для получения методов класса используются методы:

getMethods()
Возвращает массив всех публичных методов класса, включая унаследованные от суперклассов и интерфейсов.

Пример:
Class<?> clazz = String.class;
Method[] methods = clazz.getMethods();
for (Method method : methods) {
System.out.println(method.getName());
}


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

Пример:
Method[] declaredMethods = clazz.getDeclaredMethods();
for (Method method : declaredMethods) {
System.out.println(method.getName());
}


Пример получения методов класса
import java.lang.reflect.Method;

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

// Получение всех публичных методов
System.out.println("Public Methods:");
Method[] methods = clazz.getMethods();
for (Method method : methods) {
System.out.println(method.getName());
}

// Получение всех объявленных методов
System.out.println("\nDeclared Methods:");
Method[] declaredMethods = clazz.getDeclaredMethods();
for (Method method : declaredMethods) {
System.out.println(method.getName());
}
}
}


#Java #Training #Medium #Reflection_API #Method
👍1
Что выведет код?

abstract class Shape {
abstract void draw();
}

class Circle extends Shape {
void draw() {
System.out.println("Drawing Circle");
}
}

class Square extends Shape {
void draw() {
System.out.println("Drawing Square");
}
}

public class Task070225 {
public static void main(String[] args) {
Shape shape = new Circle();
shape.draw();
shape = new Square();
shape.draw();
shape = null;
shape.draw();
}
}


#Tasks
👍1
Тут на неделю работы? 😱 😕

https://t.me/Java_for_beginner_dev

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

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

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

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
👍1🔥1
Всем добрейшего субботнего утра! 🔆

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

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

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

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

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

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

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

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

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


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

Всем хорошего настроения и терпения при просмотре! 🍸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
✏️ Цитата дня: Клайв Хамби

"Мы находимся на заре новой эры, где данные — это новая нефть."


Эта фраза принадлежит Клайву Хамби, эксперту по данным. Ее суть — в том, что данные стали самым ценным ресурсом современности. Хамби использовал этот подход, чтобы подчеркнуть важность анализа данных в бизнесе и технологиях.

Почитать короткую биографию

#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📌 Факт дня:

"А вы знали что первые программы для смартфонов были написаны на языке Basic?"

Первый коммерчески успешный смартфон IBM Simon, выпущенный в 1994 году, работал на языке Basic, и пользователи могли даже рисовать на экране. Прямо как в детстве!


#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Конструктор и как его получить

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

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

https://t.me/Java_for_beginner_dev

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

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

Когда мы получаем конструктор с помощью рефлексии, часто нужно узнать, какие параметры он принимает. Для этого используется метод 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
👍1