簡體   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