在Java中访问外部类的变量

在Java android应用程序中如何从内部匿名类访问外部类的变量? 例:

ProgressDialog dialog = new ProgressDialog(this); ..... send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //here i'd like to do something with **dialog** variable ....... } }); 

如果对话框变量是外部类的字段,则可以使用前缀为外部类名称( 限定为此 ):

 send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { ProgressDialog dlg = OuterClass.this.dialog; ....... } }); 

或者,如果dialiog变量是局部变量,则需要将其标记为final:

 final ProgressDialog dialog = new ProgressDialog(this); ..... send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // The dialog variable is in scope here ... dialog.someMethod(); } }); 

使外部局部变量( dialogfinal以便您可以从内部类引用它。

如果它是局部变量(如签名所示),则内部类能够访问它是final的。 如果它是成员变量,则可见性修饰符必须是默认值(无修饰符)或更高(受保护或公共)。 使用private -modifier,它仍然有效,但您可能会收到警告(取决于您的编译器设置):

对封闭字段的读访问权SomeClass.someField由合成访问器方法模拟