1

例如,我如何在我的 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

                    }
                }
          }
      }
4

4 回答 4

3

首先,你必须做到final

void display(final boolean hasTypedSomeToken)

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

if (hasTypedSomeToken) ...
于 2011-12-16T15:15:45.610 回答
2

您需要final像这样声明它,void display(final boolean hasTypedSomeToken)并在没有前缀的情况下使用它:if(hasTypedSomeToken)

于 2011-12-16T15:15:54.130 回答
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
                }
            }
        });
    }
}
于 2011-12-16T15:16:36.220 回答
2

在方法中声明的变量是局部变量。例如hasTypedSomeToken,并且btnLogIn是您display方法中的局部变量。

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

例如

void display(final boolean hasTypedSomeToken) {

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

于 2011-12-16T15:24:16.757 回答