سؤال

RFC عن فئة Java هي مجموعة من الأساليب التي يمكن الاستناد إليها في الاستجابة إلى رسالة إلى كائن من فئة أو من قبل بعض الأسلوب في الصف.RFC = M + R حيث م = عدد الطرق في الصف.R = مجموع عدد آخر من أساليب الاحتجاج مباشرة من M.

التفكير C هو .فئة J هو .جافا الملف الذي نحتاج إلى حساب الهيئة.

class J{

 a(){}
 b(){}
 c(){
   e1.e();
   e1.f();
   e1.g();
 }
 h(){
   i.k();
   i.j();
  }
  m(){}
  n(){
   i.o();
   i.p();
   i.p();
   i.p();
  }
}

هنا M=6 و R=9 (لا تقلق حول الاتصال داخل حلقة.تعتبر مكالمة واحدة)

حساب M هي سهلة.تحميل C باستخدام classloader واستخدام التفكير في الحصول على عدد من الطرق.

حساب R غير المباشر.نحن بحاجة إلى الاعتماد على عدد من المكالمات الأسلوب من الفئة.المستوى الأول فقط.

لحساب R يجب استخدام التعابير المنطقية.عادة الشكل سيكون (المكالمات دون استخدام .لا تحسب)

[variable_name].[method_name]([zero or more parameters]);

أو

[variable_name].[method_name]([zero or more parameters])

مع منقوطة عندما اتصل العودة مباشرة يصبح المعلمة إلى أسلوب آخر.أو

[variable_name].[method_name]([zero or more parameters]).method2();

هذا يصبح اثنين طريقة المكالمات

ما أنماط أخرى من استدعاء الأسلوب ؟ هل هناك أي طريقة أخرى بخلاف باستخدام التعابير المنطقية التي يمكن استخدامها لحساب R.


تحديث:
@ماكدويل يبدو باستخدام BCEL لا يمكن تبسيط العملية برمتها.اسمحوا لي أن تحاول ذلك.

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

المحلول

هل يمكن استخدام رمز بايت مكتبة الهندسة مع الثنائيات.يمكنك استخدام DescendingVisitor لزيارة فئة' أعضاء والمراجع.لقد استخدمها تجد فئة تبعيات.

بدلا من ذلك, هل يمكن إعادة استخدام بعض نموذج من الملفات المصدر.أنا متأكد جافا محرر في الكسوف JDT مدعومة من قبل بعض شكل نموذج.

نصائح أخرى

يجب أن تجد الإجابة في لغة جافا مواصفات.

كنت قد نسيت ثابت استدعاء الأسلوب وطريقة الاتصال داخل المعلمات...

استدعاء أسلوب استخدام انعكاس (اسم الأسلوب في سلسلة).

لا م تشمل المكالمات الخاصة الأساليب ؟ أو يدعو إلى الطبقات الداخلية?على سبيل المثال:

class J {
  a() { }
  b() { this.a(); }
  c() { jj.aa(); }
  d() { i.k(); }
  e() { this.f().a(); }
  f() { return this; }
  g() { i.m().n(); }

  class JJ {
    aa() { a(); }
  }
}

ما من شأنه أن م قيمة من يكون هذا ؟ هناك فقط ثلاثة وظيفة المكالمات إلى طريقة غير المعرفة في هذه الطبقة (المكالمات في د() و ز() المهام).هل تريد أن تشمل المكالمات إلى الطبقات الداخلية ، أو يدعو إلى الطبقة الرئيسية في الداخلية الفصل ؟ هل تريد أن تشمل المكالمات إلى أساليب أخرى في نفس الفئة ؟

إذا كنت تبحث عن أي طريقة المكالمات بغض النظر عن المصدر ، ثم regex ربما يمكن أن تعمل ، ولكن يمكن أن تكون خادعة للحصول على حق (لا regex بشكل صحيح تجاهل السلاسل التي تحتوي على طريقة استدعاء مثل المحتويات?هل التعامل مع منشئ المكالمات بشكل صحيح؟).إذا كنت الرعاية حول مصدر استدعاء الأسلوب ثم regexes ربما لن تحصل على ما تريد.كنت بحاجة إلى استخدام التفكير (على الرغم للأسف أنا لا أعرف ما يكفي عن التفكير أن تكون مفيدة هناك).

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