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
}
}
}
}
First of all, you have to make it
final
:Then you can refer to it simply as
hasTypedSomeToken
:The variables declared within a method are local variables. e.g.
hasTypedSomeToken
andbtnLogIn
are local variables in yourdisplay
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 themfinal
.e.g.
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.Make the variable
final
:You need to declare it
final
, like thisvoid display(final boolean hasTypedSomeToken)
, and use it without prefixes:if(hasTypedSomeToken)
.