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

メソッド内で宣言された変数はローカル変数です。たとえばhasTypedSomeToken、とbtnLogInはメソッドのローカル変数ですdisplay

また、ローカル内部クラス(メソッド内で定義されているクラス、たとえば、ClickHandlerケースに実装されている匿名クラス)内でこれらの変数を使用する場合は、それらを宣言する必要がありますfinal

例えば

void display(final boolean hasTypedSomeToken) {

を見るとLogin.this.hasTypedSomeTokenthisはメンバー変数にアクセスするために使用されます。ローカル変数はクラスのメンバーではありません。これらは、メソッド内でのみ存在する自動変数です。

于 2011-12-16T15:24:16.757 に答える
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 に答える