给出以下代码:
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");
//...
我可以用伪代码行替换什么,以便我可以比较Inner类的两个实例的n值?
尝试显而易见的解决方案(n != that.n
)无法编译:
Outer.java:10: cannot find symbol
symbol : variable n
location: class Outer.Inner
if (n != that.n) // pseudo-code line
答案 0 :(得分:7)
与实例方法和变量一样,内部类与其封闭类的实例相关联,并且可以直接访问该对象的方法和字段。 - Java OO
你可以在内部类中编写一个getter方法,它返回外部类的n
。
Inner
上的方法:
public int getOuterN() { return n; }
然后使用此方法进行比较:
getOuterN() != that.getOuterN()