[英]How to use Outer Method's input in Anonymous Inner Class?
例如,如何在下面的Anonymou内部类中使用输入'hasTypedSomeToken'-
public class Login {
void display(boolean hasTypedSomeToken)
{
//some code here
Button btnLogIn = new Button("Login", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(Login.this.hasTypedSomeToken) //HOW TO USE hasTypedSomeToken HERE
{
//do something
}
}
}
}
首先,您必须使其final
:
void display(final boolean hasTypedSomeToken)
然后,您可以简单地将其称为hasTypedSomeToken
:
if (hasTypedSomeToken) ...
您需要将其声明为final
,例如这个void display(final boolean hasTypedSomeToken)
,并且不带前缀使用它: if(hasTypedSomeToken)
。
将变量设为final
:
public class Login {
void display(final boolean hasTypedSomeToken) {
Button btnLogIn = new Button("Login", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (hasTypedSomeToken) {
// frob a widget
}
}
});
}
}
方法中声明的变量是局部变量。 例如hasTypedSomeToken
和btnLogIn
是display
方法中的局部变量。
如果要在局部内部类(在方法内部定义的类,例如在您的情况下实现ClickHandler
的匿名类)中使用这些变量,则必须将它们声明为final
。
例如
void display(final boolean hasTypedSomeToken) {
如果你看一下Login.this.hasTypedSomeToken
, this
是用来访问成员变量。 局部变量不是类的成员。 它们是仅存在于方法中的自动变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.