هل من الممكن أن حلقة من خلال أعضاء الطبقات في جافا ؟

StackOverflow https://stackoverflow.com/questions/1652525

  •  22-07-2019
  •  | 
  •  

سؤال

لدي DTO أن لديها مجموعة كاملة من الأعضاء.كنت أتساءل إذا كان جافا يدعم فكرة عن(في) للحصول على الدرجة.أنا لا أعتقد ذلك, ولكن هذا سيوفر لي الكثير من الحزن إذا فعلت لذا فكرت إرم السؤال هناك.

هل كانت مفيدة؟

المحلول

حسنا، يمكنك أن تفعل ذلك مع انعكاس:

for (Field field : clazz.getFields())
{
    ...
}

و(أو ما يعادلها للطرق وما إلى ذلك).

وبعد ذلك يمكنك الحصول على قيم المجال لنسخة معينة، أو قيم ثابتة.

نصائح أخرى

ويفعل، عليه قليلا من المتاعب بالرغم من ذلك.

ولديك لاستخدام التفكير.

وانظر: Class.getDeclaredFieds ()

<اقتباس فقرة>   

إرجاع مجموعة من الكائنات حقل تعكس كافة الحقول التي أعلنتها فئة أو واجهة التي يمثلها هذا الكائن الدرجة

ويمكنك مشاهدة مثال هنا

<اقتباس فقرة>   

هناك ثلاث طرق الحصول على كائن حقل من كائن الفئة.

 Class cls = java.awt.Point.class;

 // By obtaining a list of all declared fields.
 Field[] fields = cls.getDeclaredFields();

 // By obtaining a list of all public fields, 
 // both declared and inherited.
 fields = cls.getFields();
 for (int i=0; i<fields.length; i++) {
   Class type = fields[i].getType();
   process(fields[i]);
 }

 // By obtaining a particular Field object.
 // This example retrieves java.awt.Point.x.
 try {
   Field field = cls.getField("x");
   process(field);
   } catch (NoSuchFieldException e) {
 }

فئة الفئة تعريف لمزيد من الخيارات.

نعم, استخدام انعكاس API.ولا سيما التحقق getFields و getMethods أساليب من Class.

ويمكنك استخدام انعكاس للحصول على كل أعضاء والوظائف.

وربما عليك أن تسأل نفسك لماذا هذا DTO لديها الكثير من الأعضاء أن كنت تعتقد أن هذا أمر ضروري. يمكن أن يكون الوقت قد حان لريفاكتور.

ونلقي نظرة على الإطار انعكاس حيث يمكنك التأمل الطبقة لهذه المعلومات.

HTTP: / /java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top