Java 如何设置外部类';s变量

Java 如何设置外部类';s变量,java,inner-classes,Java,Inner Classes,我想将属于“MySurface”的“holder”设置为内部构造函数holder,但这不起作用。我不想更改变量的名称。因为MyThread嵌套在MySurface中(并且holder参数隐藏holder实例属性,请参见下文),您必须限定封闭类: public class MySurface extends Surface View implements SurfaceHoler.Callback { SurfaceHoler holder; class MyThread extends Thre

我想将属于“MySurface”的“holder”设置为内部构造函数holder,但这不起作用。我不想更改变量的名称。

因为
MyThread
嵌套在
MySurface
中(并且
holder
参数隐藏
holder
实例属性,请参见下文),您必须限定封闭类:

public class MySurface extends Surface View implements SurfaceHoler.Callback {
SurfaceHoler holder;
class MyThread extends Thread {
    public MyThread (SurfaceHolder holder, Context context){
        this.holder = holder;
        }
    }
}
在所附的类
中,此
指的是
MyThread

或者,您可以通过重命名参数来删除此。:

MySurface.this.holder = holder;

此外,您可能会发现Oracle嵌套类教程的内容非常有趣。

MySurface.this.holder=..
public class MySurface extends Surface View implements SurfaceHoler.Callback {
  SurfaceHoler holder;

  class MyThread extends Thread {
    public MyThread (SurfaceHolder surfaceHolder, Context context){
      holder = surfaceHolder;
    }
  }
}