الوصول إلى سمة الفئة الخارجية من مثيل من فئة داخلية
-
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()
لا تنتمي إلى StackOverflow