如何设置外部class的变量
How to set outer class's variable
public class MySurface extends Surface View implements SurfaceHoler.Callback {
SurfaceHoler holder;
class MyThread extends Thread {
public MyThread (SurfaceHolder holder, Context context){
this.holder = holder;
}
}
}
我想将属于“MySurface”的“holder”设置为内部构造函数 holder,但这不起作用。我不想更改变量的名称。
由于 MyThread
嵌套在 MySurface
中( 和 holder
参数隐藏 holder
实例 属性, 见下文)你必须限定封闭的 class:
MySurface.this.holder = holder;
里面的classthis
是指MyThread
.
或者,您可以通过重命名参数来完全删除 this.
:
public class MySurface extends Surface View implements SurfaceHoler.Callback {
SurfaceHoler holder;
class MyThread extends Thread {
public MyThread (SurfaceHolder surfaceHolder, Context context){
holder = surfaceHolder;
}
}
}
此外,您可能会发现 Oracle 嵌套 类 教程的 "Shadowing" section 很有趣。
public class MySurface extends Surface View implements SurfaceHoler.Callback {
SurfaceHoler holder;
class MyThread extends Thread {
public MyThread (SurfaceHolder holder, Context context){
this.holder = holder;
}
}
}
我想将属于“MySurface”的“holder”设置为内部构造函数 holder,但这不起作用。我不想更改变量的名称。
由于 MyThread
嵌套在 MySurface
中( 和 holder
参数隐藏 holder
实例 属性, 见下文)你必须限定封闭的 class:
MySurface.this.holder = holder;
里面的classthis
是指MyThread
.
或者,您可以通过重命名参数来完全删除 this.
:
public class MySurface extends Surface View implements SurfaceHoler.Callback {
SurfaceHoler holder;
class MyThread extends Thread {
public MyThread (SurfaceHolder surfaceHolder, Context context){
holder = surfaceHolder;
}
}
}
此外,您可能会发现 Oracle 嵌套 类 教程的 "Shadowing" section 很有趣。