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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
✏️Цитата дня: Уильям Гибсон

"Будущее уже здесь, просто оно неравномерно распределено."


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

Почитать интервью:
https://habr.com/ru/articles/151764/

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

"А вы знали, что первый iPhone не умел копировать и вставлять текст?"


Да, это правда! Функция появилась только в 2009 году. Представьте, как люди мучились, перепечатывая текст вручную. Даже Apple эволюционировал...😂

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👨‍💻1
Reflection API — Определение, назначение, преимущества и недостатки

Определение и назначение Reflection API

Reflection API — это мощный механизм в Java, который позволяет анализировать и изменять поведение классов, методов, полей и других элементов программы во время выполнения.


С помощью Reflection можно:
Получать информацию о классе (его методах, полях, конструкторах, аннотациях).
Создавать экземпляры классов.
Вызывать методы.
Получать и изменять значения полей, даже если они приватные.


Reflection API часто используется в:
Фреймворках (например, Spring для dependency injection).
Библиотеках сериализации (например, Jackson для работы с JSON).
Инструментах тестирования (например, JUnit для запуска тестов).


Преимущества использования Reflection

Гибкость: Позволяет работать с классами, о которых нет информации на этапе компиляции.
Динамичность: Можно создавать и использовать объекты, вызывать методы и изменять поля во время выполнения.
Расширяемость: Полезно для создания универсальных инструментов, таких как ORM, IoC-контейнеры и т.д.


Недостатки использования Reflection

Производительность: Reflection работает медленнее, чем прямой вызов методов или доступ к полям, так как требует дополнительных проверок и вызовов.
Безопасность: Reflection может обходить модификаторы доступа (например, получить доступ к приватным полям), что может нарушить инкапсуляцию.
Сложность отладки: Код с использованием Reflection сложнее отлаживать, так как многие ошибки возникают только во время выполнения.


#Java #Training #Medium #Reflection_API
👌4
Что выведет код?

import java.io.StringWriter;

public class Task040225 {
public static void main(String[] args) {
StringWriter writer = new StringWriter();
writer.write("Hello");
writer.append(" World");
System.out.println(writer.toString().length());
}
}


#Tasks
👍1
Варианты ответа:
Anonymous Quiz
0%
5
9%
9
61%
11
30%
RuntimeException
👍1
Дружная семья 😁

https://t.me/Java_for_beginner_dev

#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣3💯1
Базовые понятия и практическое применение Reflection API

Класс Class<T>: что это такое и зачем он нужен

Класс Class<T> — это основа Reflection API. Он представляет собой метаинформацию о классе или интерфейсе.

Каждый класс в Java имеет соответствующий объект Class, который можно использовать для:
Получения информации о классе (поля, методы, конструкторы).
Создания экземпляров класса.
Вызова методов и доступа к полям.


Как получить объект Class

Через .class:
Class<String> stringClass = String.class;
Этот способ работает для любого типа, включая примитивы и массивы.


Через метод getClass():
String str = "Hello";
Class<?> stringClass = str.getClass();
Этот метод доступен для всех объектов и возвращает класс их экземпляра.


Через Class.forName():
Class<?> stringClass = Class.forName("java.lang.String");
Этот метод полезен, когда имя класса известно только во время выполнения.


Практическое применение: примеры получения объекта Class

Для примитивов:
Class<?> intClass = int.class;
System.out.println(intClass.getName()); // Вывод: int


Для классов:
Class<?> stringClass = String.class;
System.out.println(stringClass.getName()); // Вывод: java.lang.String


Для массивов:
Class<?> arrayClass = int[].class;
System.out.println(arrayClass.getName());


Для анонимных классов:
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Running");
}
};
Class<?> anonymousClass = runnable.getClass();
System.out.println(anonymousClass.getName()); // Вывод: com.example.Main$1


#Java #Training #Medium #Reflection_API #Class
👍1🤔1
✏️ Цитата дня: Гейб Ньюэлл

"Пиратство — это не проблема цены, это проблема сервиса."


Эта фраза принадлежит Гейбу Ньюэллу, сооснователю Valve и создателю Steam. Ее суть — в том, что люди готовы платить за удобство и качество. Ньюэлл использовал этот принцип, чтобы превратить Steam в крупнейшую платформу для распространения игр.

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

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

"А вы знали, что первый компьютерный чип содержал всего 2 300 транзисторов?"


Сегодня процессоры содержат миллиарды. Прогресс — это когда ваш чип умнее, чем вы после трех чашек кофе. 😂

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1🤔1
Класс Class и его методы.

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

Получение объекта Class

Объект Class можно получить несколькими способами:
Через объект: obj.getClass()
Через имя класса: Class.forName("полное.имя.класса")
Через литерал класса: ClassName.class


Пример:
String str = "Hello";
Class<?> strClass = str.getClass(); // Получаем Class для объекта String
Class<?> intClass = int.class; // Получаем Class для примитива int
Class<?> arrClass = String[].class; // Получаем Class для массива String[]


Методы для получения информации о классе

getName()
Возвращает полное имя класса, включая пакет.

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


getSimpleName()
Возвращает простое имя класса (без пакета).

Пример:
System.out.println(strClass.getSimpleName()); // Вывод: String


getPackage()
Возвращает объект Package, представляющий пакет, в котором находится класс.

Пример:
Package pkg = strClass.getPackage();
System.out.println(pkg.getName()); // Вывод: java.lang


getModifiers()
Возвращает модификаторы класса в виде целого числа. Для расшифровки используется класс Modifier.

Пример:
int modifiers = strClass.getModifiers();
System.out.println(Modifier.isPublic(modifiers)); // Вывод: true
System.out.println(Modifier.isFinal(modifiers)); // Вывод: true


Пример получения информации о классе
public class Main {
public static void main(String[] args) {
Class<?> clazz = String.class;
System.out.println("Class Name: " + clazz.getName());
System.out.println("Simple Name: " + clazz.getSimpleName());
System.out.println("Package: " + clazz.getPackage().getName());
System.out.println("Is Public: " + Modifier.isPublic(clazz.getModifiers()));
}
}


#Java #Training #Medium #Reflection_API #Class
👍3
Что выведет код?

public class Task050225 {
public static void main(String[] args) {
int x = 10;
int y = 20;
int z = 15;

int result = (x > y) ? (x > z ? x : z) : (y > z ? y : z);
System.out.println(result);
}
}


#Tasks
👍2
Варианты ответа:
Anonymous Quiz
3%
10
11%
15
57%
20
29%
Ошибка компиляции
👍1🤔1
Вы на его глаза посмотрите, помоему он в шоке 🤣

https://t.me/Java_for_beginner_dev

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

Какие примитивные типы данных есть в Java?
Anonymous Quiz
2%
String, int, float, boolean
92%
byte, short, int, long, float, double, char, boolean
2%
Integer, Double, Boolean, Char
4%
Все типы в Java являются объектами.
👍1
Класс Class и его методы. Часть 2

Получение информации о суперклассе и интерфейсах

getSuperclass()
Возвращает Class объекта, представляющего суперкласс текущего класса. Если класс не имеет суперкласса (например, Object), возвращается null.

Пример:
Class<?> arrayListClass = ArrayList.class;
Class<?> superClass = arrayListClass.getSuperclass();
System.out.println(superClass.getName()); // Вывод: java.util.AbstractList


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

Пример:
Class<?>[] interfaces = arrayListClass.getInterfaces();
for (Class<?> iface : interfaces) {
System.out.println(iface.getName()); // Вывод: java.util.List, java.util.RandomAccess и т.д.
}


Работа с аннотациями

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

Пример:
@Deprecated
class MyClass {}

Class<?> myClass = MyClass.class;
Annotation[] annotations = myClass.getAnnotations();
for (Annotation ann : annotations) {
System.out.println(ann.annotationType().getName()); // Вывод: java.lang.Deprecated
}


getDeclaredAnnotations()

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

Пример:
Annotation[] declaredAnnotations = myClass.getDeclaredAnnotations();
for (Annotation ann : declaredAnnotations) {
System.out.println(ann.annotationType().getName()); // Вывод: java.lang.Deprecated
}


Пример получения информации о суперклассе и аннотациях
public class Main {
public static void main(String[] args) {
Class<?> clazz = ArrayList.class;

// Суперкласс
Class<?> superClass = clazz.getSuperclass();
System.out.println("Superclass: " + superClass.getName());

// Интерфейсы
Class<?>[] interfaces = clazz.getInterfaces();
for (Class<?> iface : interfaces) {
System.out.println("Interface: " + iface.getName());
}

// Аннотации
Annotation[] annotations = clazz.getAnnotations();
for (Annotation ann : annotations) {
System.out.println("Annotation: " + ann.annotationType().getName());
}
}
}


#Java #Training #Medium #Reflection_API #Class
👍2🔥1
✏️ Цитата дня: Дуглас Энгельбарт

"Мы создаем инструменты, которые изменяют мир, но сначала они изменяют нас."


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


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

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

"А вы знали, что первый сенсорный телефон стоил $899?"


IBM Simon, выпущенный в 1994 году, был телефоном, пейджером и КПК в одном. Сегодня за эти деньги можно купить телефон, который звонит, фотографирует и готовит кофе. 📞

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

Поле класса — это переменная, объявленная внутри класса. Оно может быть статическим или нестатическим, публичным, приватным или защищенным. Reflection API позволяет получать информацию о полях класса, включая их типы, модификаторы и значения.

Получение полей класса

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

Пример:
import java.lang.reflect.Field;

class Parent {
public String parentField = "Parent Field";
}

class Child extends Parent {
public String childField = "Child Field";
private int privateField = 42;
}

public class Main {
public static void main(String[] args) {
Class<?> clazz = Child.class;
Field[] fields = clazz.getFields();
for (Field field : fields) {
System.out.println("Field: " + field.getName()); // Вывод: parentField, childField
}
}
}


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

Пример:
Field[] declaredFields = clazz.getDeclaredFields();
for (Field field : declaredFields) {
System.out.println("Declared Field: " + field.getName()); // Вывод: childField, privateField
}


Работа с модификаторами полей


getModifiers()

Возвращает модификаторы поля в виде целого числа. Для расшифровки используется класс Modifier.

Пример:
Field privateField = clazz.getDeclaredField("privateField");
int modifiers = privateField.getModifiers();
System.out.println("Is Private: " + Modifier.isPrivate(modifiers)); // Вывод: true
System.out.println("Is Static: " + Modifier.isStatic(modifiers)); // Вывод: false


getType()
Возвращает тип поля в виде объекта Class.

Пример:
Class<?> fieldType = privateField.getType();
System.out.println("Field Type: " + fieldType.getName()); // Вывод: int


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

public class Task060225 {
public static void main(String[] args) {
String s = "hello";
String sub = s.substring(1, 3);
System.out.println(sub);
}
}


#Tasks
👍1
Варианты ответа:
Anonymous Quiz
9%
hello
7%
llo
78%
el
7%
he
🏆2