最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么在匿名類中只能訪問(wèn)最終變量?

為什么在匿名類中只能訪問(wèn)最終變量?

為什么在匿名類中只能訪問(wèn)最終變量?a只能在這里決賽。為什么?如何a在onClick()不將其保留為私有成員的情況下重新分配方法?private void f(Button b, final int a){     b.addClickHandler(new ClickHandler() {         @Override         public void onClick(ClickEvent event) {             int b = a*5;         }     });}如何5 * a點(diǎn)擊它返回?我的意思是,private void f(Button b, final int a){     b.addClickHandler(new ClickHandler() {         @Override         public void onClick(ClickEvent event) {              int b = a*5;              return b; // but return type is void          }     });}
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

有一個(gè)技巧允許匿名類更新外部作用域中的數(shù)據(jù)。

private void f(Button b, final int a) {
    final int[] res = new int[1];
    b.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            res[0] = a * 5;
        }
    });

    // But at this point handler is most likely not executed yet!
    // How should we now res[0] is ready?}

但是,由于同步問(wèn)題,這個(gè)技巧不是很好。如果稍后調(diào)用handler,則需要1)如果從不同的線程調(diào)用處理程序,則同步對(duì)res的訪問(wèn)2)需要有某種標(biāo)志或指示res已更新

但是,如果在同一個(gè)線程中立即調(diào)用匿名類,這個(gè)技巧就可以了。喜歡:

// ...final int[] res = new int[1];Runnable r = new Runnable() { public void run() { res[0] = 123; } };r.run();System.out.println(res[0]);// ...


查看完整回答
反對(duì) 回復(fù) 2019-05-27
?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

匿名類是內(nèi)部類,嚴(yán)格規(guī)則適用于內(nèi)部類 (JLS 8.1.3)

使用但未在內(nèi)部類中聲明的任何局部變量,形式方法參數(shù)或異常處理程序參數(shù)必須聲明為final。任何在內(nèi)部類中使用但未聲明的局部變量必須在內(nèi)部類的主體之前明確賦值

我還沒(méi)有找到關(guān)于jls或jvms的原因或解釋,但我們知道,編譯器為每個(gè)內(nèi)部類創(chuàng)建一個(gè)單獨(dú)的類文件,并且必須確保在此類文件上聲明的方法(在字節(jié)代碼級(jí)別上)至少可以訪問(wèn)局部變量的值。

Jon有完整的答案 - 我保留這個(gè)未刪除的,因?yàn)橛腥丝赡軐?duì)JLS規(guī)則感興趣)


查看完整回答
反對(duì) 回復(fù) 2019-05-27
  • 3 回答
  • 0 關(guān)注
  • 884 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)