Домой Учебники по Java и J2EE Учебник по отражению Java: создание Java POJO с использованием API Reflection для...

Учебник по отражению Java: создание Java POJO с использованием API Reflection для получения ClassName, DeclaredFields, ObjectType, SuperType и других …

826
0

Лучший программный способ получить все объявленные поля классов в Java с помощью API Reflection

В этом уроке я собираюсь сначала написать простой Java POJO и выполнить все Примеры Java-отражения на POJO. Вы, наверное, слышали о сроке POJO. Что такое Plain Old Java Object ?

Также, если у вас есть вопросы ниже, то вы находитесь в правильном месте:

  • Как создать POJO?
  • Java — создание простых классов POJO
  • Простые старые объекты Java (POJO) в Java
  • Введение в POJO (Простой Старый Объект Java)
  • Проектирование класса POJO
  • Создать 1-й Java POJO класс Person

POJO простой, старый Java Bean со снятыми ограничениями. Java Beans должен соответствовать следующим требованиям:

  1. Следуйте бобовской конвенции getFoo (или же isFoo для логических значений) и setFoo методы для изменяемого атрибута с именем foo; оставьте setFoo, если foo неизменен.
  2. По умолчанию no-arg конструктор
  3. Должен реализовать java.io.Serializable

POJO не требует ни одного из них. Это как раз то, что говорит название: объект, который компилируется в JDK, может считаться простым старым Java-объектом. Нет сервера приложений, нет базовых классов, нет интерфейсов, необходимых для использования.

Давайте создадим класс POJO под названием CrunchifyPOJO.

CrunchifyPOJO.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
пакет crunchify. ком . учебные пособия ;
/ **
* @author Crunchify.com Простой пример POJO
* /
общественности учебный класс CrunchifyPOJO {
общественности строка имя ;
защищенный строка webAddress ;
общественности строка электронная почта ;
защищенный ИНТ почтовый индекс ;
общественности CrunchifyPOJO ( ) {
название знак равно Crunchify.com ;
веб-адрес знак равно https://crunchify.com ;
Эл. адрес знак равно test@crunchify.com ;
}
// ====================================================== ==========
// Создать сеттеры и геттеры для всех переменных
// ====================================================== ==========
общественности строка getName ( ) {
вернуть имя ;
}
общественности недействительным setName ( String имя ) {
это. название знак равно имя ;
}
защищенный строка getWebAddress ( ) {
вернуть webAddress ;
}
защищенный недействительным setWebAddress ( String webAddress ) {
это. веб-адрес знак равно webAddress ;
}
общественности строка getEmail ( ) {
вернуть электронная почта ;
}
общественности недействительным setEmail ( String электронная почта ) {
это. Эл. адрес знак равно электронная почта ;
}
защищенный ИНТ getZip ( ) {
вернуть почтовый индекс ;
}
защищенный недействительным setZip ( int почтовый индекс ) {
это. застежкамолния знак равно почтовый индекс ;
}
общественности недействительным thisIsCrunchifyReflection ( ) {
Система. вне. println ( — Привет, это учебники по Crunchify's Refection API. Более 400 учебников на Crunchify.com ) ;
}
// ====================================================== ==========
// Создать строковое описание учетных данных Crunchify
// ====================================================== ==========
общественности строка toString ( ) {
строка результат знак равно Название: + getName ( ) + / n ;
результат + = Веб-адрес: + getWebAddress ( ) + / n ;
результат + = Эл. адрес: + getEmail ( ) + / n ;
результат + = почтовый индекс + getZip ( ) + / n ;
вернуть результат ;
}
общественности статический недействительным main ( Строка [ ] аргументы ) {
// Создать и напечатать объект CrunchifyPOJO …
CrunchifyPOJO crunchify знак равно новый CrunchifyPOJO ( ) ;
crunchify. setName ( Crunchify.com ) ;
crunchify. setWebAddress ( https://crunchify.com ) ;
crunchify. setEmail ( test@crunchify.com ) ;
crunchify. setZip ( 95124 ) ;
Система. вне. println ( crunchify ) ;
}
}

Результат:

Выход

1
2
3
4
Имя : Crunchify. ком
WebAddress : https : //crunchify.com
электронная почта : test @ crunchify . ком
почтовый индекс : 95124

Теперь давайте Java Reflection's Example на основе этого POJO.

Взгляните на пример ниже. CrunchifyReflectionTutorial.java который охватывает всего 9 различных примеров Java Reflection API:

Вы запускаете программу на Java? Что делать, если вы хотите проверять классы, интерфейсы, поля и методы во время выполнения , не зная имен классов, методов и т. Д. Во время компиляции. Ну, с помощью Reflection это очень легко возможно. Отражение обычно используется программами, которым требуется возможность проверять или изменять поведение приложений, работающих на виртуальной машине Java, во время выполнения. Относительно отражения Java Если у вас есть какие-либо из вопросов ниже, то вы находитесь в правильном месте:

  • Учебник по отражению Java для классов, методов , полей
  • Динамическая загрузка классов с использованием Java Reflection API
  • Ознакомьтесь с API-интерфейсом Java Reflection.
  • Отражение Java API — Как создать объект с помощью объекта Constructor
  • отражение — Как я вызываю метод Java
  • Как использовать Reflection для вызова метода Java во время выполнения
  • java отражение вызывает метод без аргументов
  • Как получить имя класса, CanonicalName и SimpleName
  • Давайте выясним, представляет ли объект класса класс Array
CrunchifyReflectionTutorial.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
пакет crunchify. ком . учебные пособия ;
Импортировать Java. яз. отражать. Конструктор ;
Импортировать Java. яз. отражать. Поле ;
Импортировать Java. яз. отражать. Метод ;
/ **
* @author Crunchify.com
*
* /
общественности учебный класс CrunchifyReflectionTutorial {
общественности статический недействительным main ( Строка [ ] аргументы ) {
CrunchifyPOJO crunchify знак равно новый CrunchifyPOJO ( ) ;
Система. вне. println ( Crunchify Object: ==================== / n + хрустеть ) ;
// Как узнать, к какому классу принадлежит объект?
Класс > clazz знак равно crunchify. getClass ( ) ;
// Пример 1: ==================== Как получить имя класса,
// CanonicalName и SimpleName?
строка clazzName знак равно клац . getName ( ) ;
строка clazzCanonicalName знак равно клац . getCanonicalName ( ) ;
строка clazzSimpleName знак равно клац . getSimpleName ( ) ;
Система. вне. println ( Как получить имя класса, CanonicalName и SimpleName? ==================== Пример 1 ) ;
Система. вне. println ( 1. clazzName: + clazzName + , / n2. clazzCanonicalName: + clazzCanonicalName
+ , / n3. clazzSimpleName: + clazzSimpleName + / n ) ;
// Пример 2: ==================== Давайте выясним, является ли объект класса
// представляет класс Array
int [ ] [ ] crunchifyArr знак равно { { 1 , 1 } , { 2 , 1 } } ;
Класс продолжается int [ ] [ ] > arrClazz знак равно crunchifyArr . getClass ( ) ;
Система. вне. println ( «Давайте выясним, представляет ли объект класса класс Array ==================== Пример 2 ) ;
если ( arrClazz . isArray ( ) ) {
Система. вне. println ( + arrClazz . getSimpleName ( ) + это массив классов ./n ) ;
} еще {
Система. вне. println ( + клац . getSimpleName ( ) + не является классом массива ./n ) ;
}
// Пример 3: ==================== Давайте выясним тип объекта
двойной crunchifyDouble знак равно 11,1 ;
Система. вне. println ( «Давайте выясним тип объекта ==================== Пример 3 ) ;
Система. вне. println ( — 11.1 имеет тип: + crunchifyDouble . getClass ( ) . getName ( ) + / n ) ;
// Пример 4: ==================== Как получить Суперкласс
Система. вне. println ( Как получить SuperClass ==================== Пример 4 ) ;
Система. вне. println ( 1. Суперкласс crunchify: + crunchify. getClass ( ) . getSuperclass ( )
+ / n2. Суперкласс crunchifyDouble: + crunchifyDouble . getClass ( ) . getSuperclass ( ) + / n ) ;
// Пример 5: ==================== Как проверить, является ли класс примитивным
// Типа нет?
Система. вне. println ( «Как проверить, является ли класс примитивным типом not? ==================== Пример 5» ) ;
Система. вне. println ( 1. Является ли 'int' типом примитива: + инт . класс. isPrimitive ( ) ) ;
Система. вне. println ( 2. Является ли 'String' типом примитива: + Строка. класс. isPrimitive ( ) ) ;
Система. вне. println ( 3. Является ли 'double' типом примитива: + двойной . класс. isPrimitive ( ) ) ;
// Пример 6: ==================== Как создать объект, используя
// Конструктор объекта?
// Отражение конструктора для создания строкового объекта путем вызова
// Конструкторы String (String) и String (StringBuilder).
Класс < String > clazzString знак равно Строка. класс ;
Система. вне. println ( / nКак создать объект с помощью объекта Constructor? ==================== Пример 6 ) ;
пытаться {
Конструктор > конструктор знак равно clazzString . getConstructor ( новый Класс [ ] { Строка. учебный класс } ) ;
строка объект знак равно ( Строка ) конструктор. newInstance ( новый Объект [ ] { Привет, мир! } ) ;
Система. вне. println ( 1. String.class = + объект ) ;
конструктор знак равно clazzString . getConstructor ( новый Класс [ ] { StringBuilder . учебный класс } ) ;
объект знак равно ( Строка ) конструктор. newInstance ( новый Объект [ ] { новый StringBuilder ( «Привет, Вселенная!» ) } ) ;
Система. вне. println ( 2. StringBuilder.class = + объект ) ;
} ловить ( Исключение е ) {
эл . printStackTrace ( ) ;
}
// Пример 7: ==================== Как получить конструкторы класса
// объект?
Система. вне. println ( / nКак получить конструкторы объекта класса ==================== Пример 7 ) ;
пытаться {
Конструктор продолжается CrunchifyPOJO > конструктор знак равно crunchify. getClass ( ) . getConstructor ( ) ;
Система. вне. println ( — Конструктор = + конструктор. getName ( ) ) ;
} ловить ( NoSuchMethodException е ) {
эл . printStackTrace ( ) ;
}
// Пример 8: ==================== Как получить поле объекта класса
пытаться {
Система. вне. println ( / nКак получить поле объекта класса ==================== Пример 8 ) ;
Поле [ ] методы знак равно клац . getFields ( ) ;
за ( Поле температуры : методы ) {
Система. вне. println ( + темп . getName ( ) ) ;
}
} ловить ( Исключение е ) {
эл . printStackTrace ( ) ;
}
// Пример 9: ==================== Как вызвать метод с помощью метода
// учебный класс?
пытаться {
Система. вне. println ( / nКак вызвать метод с использованием класса Method ==================== Пример 9 ) ;
Класс > с знак равно Класс. forName ( crunchify.com.tutorials.CrunchifyPOJO ) ;
объект OBJ знак равно с . newInstance ( ) ;
Метод метод знак равно с . getDeclaredMethod ( thisIsCrunchifyReflection ) ;
метод . вызвать ( obj ) ;
} ловить ( Исключение е ) {
Система. вне. println ( e ) ;
}
// Пример 10: ==================== получить все объявленные поля классов
Поле [ ] crunchifyFields знак равно CrunchifyPOJO . класс. getDeclaredFields ( ) ;
Система. вне. println ( / nget все объявленные поля классов ==================== Пример 10 ) ;
за ( Поле поля : crunchifyFields ) {
Класс < ? > тип знак равно поле. getType ( ) ;
Система. вне. println ( имя поля: + поле. getName ( ) + , тип : + тип ) ;
}
}
}

Результат:

Выход

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Crunchify Объект : ====================
Имя : Crunchify. ком
WebAddress : https : //crunchify.com
электронная почта : test @ crunchify . ком
почтовый индекс : 0
как получить имя класса , CanonicalName и SimpleName? ==================== Пример 1
1. clazzName: crunchify.com.tutorials.CrunchifyPOJO,
2. clazzCanonicalName: crunchify.com.tutorials.CrunchifyPOJO,
3. clazzSimpleName: CrunchifyPOJO
Давайте выяснить , если учебный класс объект представляет собой массив учебный класс ==================== пример 2
int [ ] [ ] является массив класс.
Давайте выясним Object 's Тип ==================== пример 3
11,1 является Типа: Java. яз. двойной
как получить суперкласс ==================== пример 4
1. Суперкласс crunchify: учебный класс Java. яз. объект
2. Суперкласс crunchifyDouble: учебный класс Java. яз. Число
как проверить, если учебный класс является Примитивный Тип не? ==================== пример 5
1. Является 'INT' Примитивный тип : правда
2. Является «Строка» Примитивный тип : ложный
3. Является «двойной» Примитивный тип : правда
как создать объект используя конструктор объекта ? ==================== пример 6
1. Строка. учебный класс знак равно Привет, мир !
2. StringBuilder . учебный класс знак равно Привет Вселенная !
как получить конструктор учебный класс объект ==================== пример 7
Конструктор знак равно crunchify. ком . учебники . CrunchifyPOJO
как получить поле учебный класс объект ==================== пример 8
название
Эл. адрес
как взывать метод с использованием класса Method ==================== пример 9
Эй это является Crunchify 's Refection API уроки . Более чем 400 Учебники по Crunchify . ком
получить весь объявленный класс поля ==================== пример 10
имя поля : название , тип : учебный класс Java. яз. строка
имя поля : веб-адрес , тип : учебный класс Java. яз. строка
имя поля : Эл. адрес , тип : учебный класс Java. яз. строка
имя поля : застежкамолния , тип : ИНТ

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

Учебник по отражению Java: создание Java POJO с использованием API Reflection для получения ClassName, DeclaredFields, ObjectType, SuperType и других …

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Как создать новый простой Maven Project в Eclipse без archtype - подробные шаги включены

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь