繁体   English   中英

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

[英]How to use Outer Method's input in Anonymous Inner Class?

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

                    }
                }
          }
      }

首先,您必须使其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
                }
            }
        });
    }
}

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

如果要在局部内部类(在方法内部定义的类,例如在您的情况下实现ClickHandler的匿名类)中使用这些变量,则必须将它们声明为final

例如

void display(final boolean hasTypedSomeToken) {

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM