برنامج Java Reflection التعليمي: إنشاء Java POJO استخدم Reflection API للحصول على ClassName و DeclaredFields و ObjectType و SuperType والمزيد ...
نشرت: 2019-06-10
أفضل طريقة برمجية للحصول على جميع حقول الفصل المُعلن عنها في Java باستخدام واجهات برمجة تطبيقات انعكاس
في هذا البرنامج التعليمي ، سأقوم أولاً بكتابة Java POJO وسأقوم بتنفيذ جميع أمثلة انعكاس Java على POJO. يجب أن تكون قد سمعت عن مصطلح POJO. ما هو Plain Old Java Object
؟
أيضًا إذا كانت لديك أسئلة أدناه ، فأنت في الموقع الصحيح:
- جافا - كيف تصنع POJO؟
- جافا - أنشئ فصولًا بسيطة للعبة بوجو
- كائنات جافا القديمة البسيطة (POJOs) في جافا
- مقدمة إلى POJO (كائن Java قديم عادي)
- تصميم فئة POJO
- قم بإنشاء 1st Java POJO class Person
POJO
هو مجرد Java Bean
قديم بسيط مع إزالة القيود. يجب أن تفي Java Beans بالمتطلبات التالية:
- اتبع اصطلاح Bean لـ
getFoo
(أوisFoo
لـ booleans) وطرقsetFoo
لسمة قابلة للتغيير تسمى foo ؛ اترك setFoo إذا كان foo ثابتًا. - مُنشئ
no-arg
افتراضي - يجب تنفيذ
java.io.Serializable
POJO لا تفوض أي من هؤلاء. إنه بالضبط ما يقوله الاسم: يمكن اعتبار الكائن الذي يتم تجميعه ضمن JDK كائن Java قديمًا عاديًا.
لا يوجد خادم تطبيقات ، ولا فئات أساسية ، ولا توجد واجهات مطلوبة للاستخدام.
لنقم بإنشاء فئة POJO تسمى CrunchifyPOJO.
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 |
package crunchify . com . tutorials ; /** * @author Crunchify.com Simple POJO Example */ public class CrunchifyPOJO { public String name ; protected String webAddress ; public String email ; protected int zip ; public CrunchifyPOJO ( ) { name = "Crunchify.com" ; webAddress = "https://crunchify.com" ; } // ========================================================== // Create a Setters and Getters for all variables // ========================================================== public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } protected String getWebAddress ( ) { return webAddress ; } protected void setWebAddress ( String webAddress ) { this . webAddress = webAddress ; } public String getEmail ( ) { return email ; } public void setEmail ( String email ) { this . email = email ; } protected int getZip ( ) { return zip ; } protected void setZip ( int zip ) { this . zip = zip ; } public void thisIsCrunchifyReflection ( ) { System . out . println ( "- Hey This is Crunchify's Refection API tutorials. More than 400 Tutorials on Crunchify.com" ) ; } // ========================================================== // Create a String description of a Crunchify credentials // ========================================================== public String toString ( ) { String result = "Name: " + getName ( ) + "\n" ; result += "WebAddress: " + getWebAddress ( ) + "\n" ; result += "email: " + getEmail ( ) + "\n" ; result += "zip: " + getZip ( ) + "\n" ; return result ; } public static void main ( String [ ] args ) { // Create and print a CrunchifyPOJO object ... CrunchifyPOJO crunchify = new CrunchifyPOJO ( ) ; crunchify . setName ( "Crunchify.com" ) ; crunchify . setWebAddress ( "https://crunchify.com" ) ; crunchify . setZip ( 95124 ) ; System . out . println ( crunchify ) ; } } |
نتيجة:
1 2 3 4 |
Name : Crunchify . com WebAddress : https : //crunchify.com email : test @ crunchify . com zip : 95124 |

الآن دعونا نحصل Java Reflection's Example
استنادًا إلى POJO.
ألقِ نظرة أدناه على فئة المثال CrunchifyReflectionTutorial.java
التي تغطي إجمالي 9 أمثلة مختلفة لـ Java Reflection API:
هل تقوم بتشغيل برنامج جافا؟
ماذا لو كنت تريد فحص الفئات والواجهات والحقول والأساليب في وقت التشغيل ، دون معرفة أسماء الفئات والطرق وما إلى ذلك في وقت الترجمة. حسنًا ، بمساعدة التفكير ، أصبح ذلك ممكنًا بسهولة.
يستخدم الانعكاس بشكل شائع من قبل البرامج التي تتطلب القدرة على فحص أو تعديل سلوك وقت تشغيل التطبيقات التي تعمل في جهاز Java الظاهري.
بخصوص انعكاس جافا إذا كان لديك أي من الأسئلة التالية ، فأنت في المكان الصحيح:
- برنامج تعليمي Java Reflection للفئات والطرق والحقول
- تحميل الفصل الديناميكي باستخدام Java Reflection API
- ألق نظرة متعمقة على Java Reflection API
- انعكاس java api - كيفية إنشاء كائن باستخدام كائن منشئ
- الانعكاس - كيف يمكنني استدعاء طريقة Java
- كيفية استخدام Reflection لاستدعاء طريقة Java في وقت التشغيل
- انعكاس جافا استدعاء الأسلوب بدون وسيطات
- كيفية الحصول على اسم الفصل و CanonicalName و SimpleName
- لنكتشف ما إذا كان كائن الفئة يمثل فئة Array
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 |
package crunchify . com . tutorials ; import java . lang . reflect . Constructor ; import java . lang . reflect . Field ; import java . lang . reflect . Method ; /** * @author Crunchify.com * */ public class CrunchifyReflectionTutorial { public static void main ( String [ ] args ) { CrunchifyPOJO crunchify = new CrunchifyPOJO ( ) ; System . out . println ( "Crunchify Object: ====================\n" + crunchify ) ; // How to find out the Object belongs to which class? Class <? > clazz = crunchify . getClass ( ) ; // Example 1: ==================== How to get the Class's Name, // CanonicalName and SimpleName? String clazzName = clazz . getName ( ) ; String clazzCanonicalName = clazz . getCanonicalName ( ) ; String clazzSimpleName = clazz . getSimpleName ( ) ; System . out . println ( "How to get the Class's Name, CanonicalName and SimpleName? ==================== Example 1" ) ; System . out . println ( "1. clazzName: " + clazzName + ", \n2. clazzCanonicalName: " + clazzCanonicalName + ", \n3. clazzSimpleName: " + clazzSimpleName + "\n" ) ; // Example 2: ==================== Let's find out if class object // represents an Array class int [ ] [ ] crunchifyArr = { { 1 , 1 } , { 2 , 1 } } ; Class <? extends int [ ] [ ] > arrClazz = crunchifyArr . getClass ( ) ; System . out . println ( "Let's find out if class object represents an Array class ==================== Example 2" ) ; if ( arrClazz . isArray ( ) ) { System . out . println ( "- " + arrClazz . getSimpleName ( ) + " is an array class.\n" ) ; } else { System . out . println ( "- " + clazz . getSimpleName ( ) + " is not an array class.\n" ) ; } // Example 3: ==================== Let's find out Object's Type Double crunchifyDouble = 11.1 ; System . out . println ( "Let's find out Object's Type ==================== Example 3" ) ; System . out . println ( "- 11.1 is of Type: " + crunchifyDouble . getClass ( ) . getName ( ) + "\n" ) ; // Example 4: ==================== How to get SuperClass System . out . println ( "How to get SuperClass ==================== Example 4" ) ; System . out . println ( "1. Superclass of crunchify: " + crunchify . getClass ( ) . getSuperclass ( ) + "\n2. Superclass of crunchifyDouble: " + crunchifyDouble . getClass ( ) . getSuperclass ( ) + "\n" ) ; // Example 5: ==================== How to check if class is Primitive // Type of not? System . out . println ( "How to check if class is Primitive Type of not? ==================== Example 5" ) ; System . out . println ( "1. Is 'int' a Prmitive Type: " + int . class . isPrimitive ( ) ) ; System . out . println ( "2. Is 'String' a Prmitive Type: " + String . class . isPrimitive ( ) ) ; System . out . println ( "3. Is 'double' a Prmitive Type: " + double . class . isPrimitive ( ) ) ; // Example 6: ==================== How to create an object using // Constructor object? // A constructor reflection to create a string object by calling // String(String) and String(StringBuilder) constructors. Class < String > clazzString = String . class ; System . out . println ( "\nHow to create object using Constructor object? ==================== Example 6" ) ; try { Constructor <? > constructor = clazzString . getConstructor ( new Class [ ] { String . class } ) ; String object = ( String ) constructor . newInstance ( new Object [ ] { "Hello World!" } ) ; System . out . println ( "1. String.class = " + object ) ; constructor = clazzString . getConstructor ( new Class [ ] { StringBuilder . class } ) ; object = ( String ) constructor . newInstance ( new Object [ ] { new StringBuilder ( "Hello Universe!" ) } ) ; System . out . println ( "2. StringBuilder.class = " + object ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } // Example 7: ==================== How to get constructors of a class // object? System . out . println ( "\nHow to get constructors of a class object ==================== Example 7" ) ; try { Constructor <? extends CrunchifyPOJO > constructor = crunchify . getClass ( ) . getConstructor ( ) ; System . out . println ( "- Constructor = " + constructor . getName ( ) ) ; } catch ( NoSuchMethodException e ) { e . printStackTrace ( ) ; } // Example 8: ==================== How to get field of a class object try { System . out . println ( "\nHow to get field of a class object ==================== Example 8" ) ; Field [ ] methods = clazz . getFields ( ) ; for ( Field temp : methods ) { System . out . println ( "- " + temp . getName ( ) ) ; } } catch ( Exception e ) { e . printStackTrace ( ) ; } // Example 9: ==================== How to invoke a method using Method // class? try { System . out . println ( "\nHow to invoke a method using Method class ==================== Example 9" ) ; Class <? > c = Class . forName ( "crunchify.com.tutorials.CrunchifyPOJO" ) ; Object obj = c . newInstance ( ) ; Method method = c . getDeclaredMethod ( "thisIsCrunchifyReflection" ) ; method . invoke ( obj ) ; } catch ( Exception e ) { System . out . println ( e ) ; } // Example 10: ==================== get all Declared Class Fields Field [ ] crunchifyFields = CrunchifyPOJO . class . getDeclaredFields ( ) ; System . out . println ( "\nget all Declared Class Fields ==================== Example 10" ) ; for ( Field field : crunchifyFields ) { Class < ? > type = field . getType ( ) ; System . out . println ( "field name : " + field . getName ( ) + " , type : " + type ) ; } } } |
نتيجة:
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 Object : ==================== Name : Crunchify . com WebAddress : https : //crunchify.com email : test @ crunchify . com zip : 0 How to get the Class 's Name, CanonicalName and SimpleName? ==================== Example 1 1. clazzName: crunchify.com.tutorials.CrunchifyPOJO, 2. clazzCanonicalName: crunchify.com.tutorials.CrunchifyPOJO, 3. clazzSimpleName: CrunchifyPOJO Let' s find out if class object represents an Array class ==================== Example 2 - int [ ] [ ] is an array class . Let 's find out Object' s Type ==================== Example 3 - 11.1 is of Type : java . lang . Double How to get SuperClass ==================== Example 4 1. Superclass of crunchify : class java . lang . Object 2. Superclass of crunchifyDouble : class java . lang . Number How to check if class is Primitive Type of not ? ==================== Example 5 1. Is 'int' a Prmitive Type : true 2. Is 'String' a Prmitive Type : false 3. Is 'double' a Prmitive Type : true How to create object using Constructor object ? ==================== Example 6 1. String . class = Hello World ! 2. StringBuilder . class = Hello Universe ! How to get constructors of a class object ==================== Example 7 - Constructor = crunchify . com . tutorials . CrunchifyPOJO How to get field of a class object ==================== Example 8 - name - email How to invoke a method using Method class ==================== Example 9 - Hey This is Crunchify ' s Refection API tutorials . More than 400 Tutorials on Crunchify . com get all Declared Class Fields ==================== Example 10 field name : name , type : class java . lang . String field name : webAddress , type : class java . lang . String field name : email , type : class java . lang . String field name : zip , type : int |
المثال الكامل يمكن شرحه ذاتيًا لأنني حاولت بذل قصارى جهدي لوضع أكبر قدر من مخارج النظام في البرنامج نفسه.

جربه واعلمني إذا كان لديك أي سؤال. ترميز سعيد.