[英]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
}
}
});
}
}
方法中聲明的變量是局部變量。 例如hasTypedSomeToken
和btnLogIn
是display
方法中的局部變量。
如果要在局部內部類(在方法內部定義的類,例如在您的情況下實現ClickHandler
的匿名類)中使用這些變量,則必須將它們聲明為final
。
例如
void display(final boolean hasTypedSomeToken) {
如果你看一下Login.this.hasTypedSomeToken
, this
是用來訪問成員變量。 局部變量不是類的成員。 它們是僅存在於方法中的自動變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.