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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.