2011-12-16 62 views
1

比如我怎么能在以下使用输入“hasTypedSomeToken”在我Anonymou内部类 -如何在匿名内部类中使用Outer方法的输入?

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 

        } 
       } 
      } 
     } 
+0

“Login.this.something”用于访问此“登录”实例的字段。 – viktor 2011-12-16 15:20:18

+0

感谢您的回复。其实我知道。只是而不是写hasTypedSomeToken(这也是不正确的),我输入。 – abhihello123 2011-12-16 15:22:59

回答

2

的方法内声明的变量是局部变量。例如hasTypedSomeTokenbtnLogIn是您的display方法中的局部变量。

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

例如

void display(final boolean hasTypedSomeToken) { 

如果你看一下Login.this.hasTypedSomeTokenthis用于访问成员变量。局部变量不是类的成员。它们是只存在于方法中的自动变量。

3

首先,你必须使它final

void display(final boolean hasTypedSomeToken) 

然后你就可以将它简称为hasTypedSomeToken

if (hasTypedSomeToken) ... 
2

你需要声明它final,这样void display(final boolean hasTypedSomeToken),并使用它没有前缀:if(hasTypedSomeToken)

2

使变量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 
       } 
      } 
     }); 
    } 
}