如何在匿名内部类中使用外部方法的输入?

对于Instance,如何在我的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 } } } } 

方法中声明的变量是局部变量。 例如hasTypedSomeTokenbtnLogIndisplay方法中的局部变量。

如果你想在本地内部类中使用这些变量(在方法中定义的类,例如在你的情况下实现ClickHandler的匿名类),那么你必须将它们声明为final

例如

 void display(final boolean hasTypedSomeToken) { 

如果查看Login.this.hasTypedSomeToken ,则用于访问成员变量。 局部变量不是类的成员。 它们是仅在方法中存在的自动变量。

首先,你必须做到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 } } }); } }