الوصول إلى سمة الفئة الخارجية من مثيل من فئة داخلية

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

  •  21-09-2019
  •  | 
  •  

سؤال

بالنظر إلى الرمز التالي:

public class Outer
{
   public final int n;
   public class Inner implements Comparable<Inner>
   {
      public int compareTo(Inner that) throws ClassCastException
      {
          if (Outer.this.n != Outer.that.n) // pseudo-code line
          {
               throw new ClassCastException("Only Inners with the same value of n are comparable");
//...

ما الذي يمكنني تبديله مع خط الرمز الزائف الخاص بي حتى أتمكن من مقارنة قيم N للحالات الفئة الداخلية؟

محاولة الحل الواضح (n != that.n) لا يجمع:

Outer.java:10: cannot find symbol
symbol  : variable n
location: class Outer.Inner
                    if (n != that.n) // pseudo-code line
هل كانت مفيدة؟

المحلول

كما هو الحال مع أساليب المثيل والمتغيرات ، ترتبط الفئة الداخلية بمثال من فئة المرفقات ولديها وصول مباشر إلى أساليب وحقول ذلك الكائن. - جافا أوو

يمكنك كتابة طريقة getter في الفصل الداخلي ، الذي يعود n من الطبقة الخارجية.

طريقة على Inner:

public int getOuterN() { return n; }

ثم قارن باستخدام هذه الطريقة:

getOuterN() != that.getOuterN()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top