1

For Instance how can I use the input 'hasTypedSomeToken' in my Anonymou inner class in the following -

    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

                    }
                }
          }
      }
2
  • Login.this.something is for accessing field of this Login instance. Commented Dec 16, 2011 at 15:20
  • Thanks for the reply. Actually I know it. Just instead of writing hasTypedSomeToken(which is also incorrect) I typed that. Commented Dec 16, 2011 at 15:22

4 Answers 4

3

First of all, you have to make it final:

void display(final boolean hasTypedSomeToken)

Then you can refer to it simply as hasTypedSomeToken:

if (hasTypedSomeToken) ...
Sign up to request clarification or add additional context in comments.

Comments

2

The variables declared within a method are local variables. e.g. hasTypedSomeToken and btnLogIn are local variables in your display method.

And if you want to use those variables inside a local inner class (classes that are defined inside a method e.g. the anonymous class that implements ClickHandler in your case) then you have to declare them final.

e.g.

void display(final boolean hasTypedSomeToken) {

If you look at Login.this.hasTypedSomeToken, this is used to access member variables. Local variables are not members of class. They are automatic variables that live only within the method.

1 Comment

I got 3 superfast answers and 1 elaborated answer in so less time. Im feeling like choosing among one of my own children :( Since this answer has some more explanation attached to it (& Iv to chose one) Im choosing it but thanks to u all equally
2

You need to declare it final, like this void display(final boolean hasTypedSomeToken), and use it without prefixes: if(hasTypedSomeToken).

Comments

2

Make the variable 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
                }
            }
        });
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.