如何在匿名内部类中使用外部方法的输入?
对于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 } } } }
方法中声明的变量是局部变量。 例如hasTypedSomeToken
和btnLogIn
是display
方法中的局部变量。
如果你想在本地内部类中使用这些变量(在方法中定义的类,例如在你的情况下实现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 } } }); } }