Java中外部类的访问变量
在Java android应用程序中,如何从内部匿名类访问外部类的变量? 例如:Java中外部类的访问变量,java,local-variables,anonymous-inner-class,Java,Local Variables,Anonymous Inner Class,在Java android应用程序中,如何从内部匿名类访问外部类的变量? 例如: 如果对话框变量是外部类的字段,则可以使用前缀为外部类名称()的this: 或者,如果dialiog变量是局部变量,则需要将其标记为final: final ProgressDialog dialog = new ProgressDialog(this); ..... send.setOnClickListener(new View.OnClickListener() { public void onCli
如果对话框变量是外部类的字段,则可以使用前缀为外部类名称()的
this
:
或者,如果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();
}
});
使外部局部变量(
dialog
)final
,以便可以从内部类引用它。如果它是局部变量(如签名所示),则内部类需要final
才能访问它。如果是成员变量,则可见性修改器需要为默认值(无修改器)或更高值(受保护或公共)。使用private
-modifier,它仍然可以工作,但您可能会收到警告(取决于您的编译器设置):
对封闭字段SomeClass.someField的读取访问由
综合存取器法
当
对话框
是外部类的字段时,这是正确的答案。我认为在这种情况下,它是内部类方法中的一个局部变量。我很高兴java支持这一点,所以我不必提出不同的奇怪名称。关于成员变量的部分是不正确的。内部类可以访问封闭类的私有成员——编译器为这些成员生成隐藏的访问器。
send.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
ProgressDialog dlg = OuterClass.this.dialog;
.......
}
});
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();
}
});