في بعض الأحيان تعرف ما هو داخل هذا الكائن ، ولكن لأسباب مختلفة ، لا يمكنك تحويله إلى كائن. تريد فقط استخراج بعض الأشياء من هذا الكائن. تحتاج إلى استخدام التفكير في هذا الوقت.
إذا كان صفك يبدو هكذا:
مستخدم فئة خاصة {string username ؛ string userpassword ؛ public string getUserName () {return username ؛} public void setusername (string username) {this.username = username ؛} public string getUserPassword ()نحن جديد ، نخصص القيمة ، ونتحول إلى كائن
مستخدم المستخدم = مستخدم جديد () ؛ user.setusername ("Xu Fenglai") ؛ user.setUserPassword ("1596666") ؛ كائن كائن = مستخدم ؛احصل على اسم السمة وحفظه في صفيف
java.lang.reflect.field [] الحقول = object.getClass ().
الإخراج
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: هذا $ 0
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: اسم المستخدم
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: userpassword
12-17 12: 02: 10.199 22949-22949/com.example.wechat I/XBH: $ Change
12-17 12: 02: 10.199 22949-22949/com.example.wechat I/XBH: SerialVersionuid
يمكنك أن ترى أن اسمين السمات اللذين حددناهما يظهران ، ويتم تضمين الثلاثة الأخرى دون القلق بشأنهما.
احصل على قيمة السمة ، واحصل أولاً على طريقة GET ، ثم احصل عليها عن طريق استدعاء طريقة GET.
java.lang.reflect.method [] method = object.getClass (). if (m.getName (). startswith ("get")) {object o = null ؛ حاول {o = m.invoke (كائن) ؛ } catch (invalualAccessException | invocationTargetException e) {E.PrintStackTrace () ؛ } if (o! = null &&! "". يساوي (o.toString ())) {log.i ( }} الإخراج
12-17 12: 09: 33.429 29677-29677/com.example.wechat I/XBH: Xu Fenglai
12-17 12: 09: 33.429 29677-29677/com.example.wechat I/XBH: 1596666
أنه إذا كان البيان هو طريقة الحصول على بداية الحصول على
استدعاء في المحاولة ينفذ هذه الطريقة ويضع قيمة الإرجاع في o
عدم الحصول على قيم السمة من خلال طريقة GET
java.lang.reflect.field fi = null ؛ // احصل على السمة جرب {fi = object.getClass (). {log.i ("xbh" ، fi.get (object) .ToString ()) ؛} catch (alfortalAccessexception e) {E.PrintStackTrace () ؛} الإخراج
12-17 12: 17: 34.419 4732-4732/com.example.wechat I/XBH: Xu Fenglai
يمكنك الحصول عليها مباشرة من خلال طريقة GetDeclaredField (لاحظ أنه يختلف عن طريقة getDeclaredFields أعلاه). ولكن إذا كانت سمة الخاصة بك خاصة ، فلن تتمكن بالتأكيد من الوصول إليها ، بحيث يمكنك الوصول إليها عن طريق تعيين هذه السمة على الجمهور (setAccable).
بالإضافة إلى ذلك ، إذا كنت تحصل على بيانات JSON ، فلن تحتاج إلى تحليل كائن فيه ، فقط قم بتحويله إلى خريطة.
على سبيل المثال
{"Code": 0 ، "List": [{"username": "3294727437" ، "UserPassword": "XBH1" ، "useravatar":
يمكنك الحصول على المجموعة التالية من خلال Jsonarray ("List") ، ثم الحصول على كائن واحد من خلال GET (i). في الواقع ، تم تحويل الكائن في البداية إلى خريطة ، لذا تحقق من ذلك بعناية. لذلك ، ليست هناك حاجة للتفكير والحصول على سمات. يمكنك التحول مباشرة إلى خريطة لاسترداد البيانات.
يحب
خريطة <string ، string = ""> map = (map <string ، string = "">) u ؛ map.get ("useravatar") ؛ </string ،> </string ،>لخص
ما سبق هو كل محتوى هذه المقالة حول انعكاس Java للحصول على تحليل رمز قيمة سمة الكائن. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!