2

我有一个静态内部类,我想在其中使用外部类的实例变量。目前,我必须以“Outerclass.this.instanceVariable”这种格式使用它,这看起来很奇怪,有没有更简单的方法来访问外部类的实例字段?

Public class Outer
{
  private int x;
  private int y;
 private static class Inner implements Comparator<Point>
{
  int xCoordinate = Outer.this.x;   // any easier way to access outer x ?
}
}
4

1 回答 1

6

嵌套类static不能引用外部类实例,因为它static没有相关的外部类实例。如果您希望静态嵌套类引用外部类,请将实例作为构造函数参数传递。

public class Outer
{
    private int x;
    private int y;
    private static class Inner implements Comparator<Point>
    {    
        int xCoordinate;

        public Inner(Outer outer) {
            xCoordinate = outer.x;       
        }
    }
}

如果您的意思是一个内部(非static嵌套)类并且没有变量名冲突(即两个变量称为相同名称),您可以直接引用外部类变量

public class Outer
{
    private int x;
    private int y;
    private class Inner 
    {    
        int xCoordinate = x;
    }
}
于 2013-09-10T22:21:22.917 回答