例如,我如何使用输入'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) ...
方法中声明的变量是局部变量。例如,hasTypedSomeToken
和btnLogIn
是display
方法中的局部变量。
如果你想在本地内部类(在方法中定义的类,例如在你的情况下实现ClickHandler
的匿名类)中使用这些变量,那么你必须声明它们为final
。
。
void display(final boolean hasTypedSomeToken) {
如果你看Login.this.hasTypedSomeToken
, this
是用来访问成员变量的。局部变量不是类的成员。它们是只存在于方法中的自动变量。
您需要将其声明为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
}
}
});
}
}