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

时间:2011-12-16 15:13:25

标签: java anonymous-inner-class outer-classes

对于实例,如何使用输入' hasTypedSomeToken'在我的Anonymou内部类中,如下 -

    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

                    }
                }
          }
      }

4 个答案:

答案 0 :(得分:3)

首先,您必须将其final

void display(final boolean hasTypedSomeToken)

然后您可以简单地将其称为hasTypedSomeToken

if (hasTypedSomeToken) ...

答案 1 :(得分:2)

您需要声明final,例如此void display(final boolean hasTypedSomeToken),并使用它而不使用前缀:if(hasTypedSomeToken)

答案 2 :(得分: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
                }
            }
        });
    }
}

答案 3 :(得分:2)

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

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

e.g。

void display(final boolean hasTypedSomeToken) {

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

相关问题