鍍金池/ 問答/Java  HTML/ java語法問題

java語法問題

private FutureTask<Map<String, NewsIdInfo>> getSearchFutureTask(NewsItem newsItem) {

    return new FutureTask<>(() -> {
        String docId = newsItem.getDocId();
        ...});

}

() -> 應(yīng)該代表傳入一個(gè)callable的匿名子類對(duì)象
然而方法內(nèi)部居然可以綁定入?yún)?這是什么用法啊???

回答
編輯回答
若相惜

lambda表達(dá)式,入?yún)⑹鞘裁匆馑?/p>

2017年12月22日 18:40
編輯回答
負(fù)我心

什么叫什么用法,如果你說的是 newsItem 為什么可以出現(xiàn)在 callable 里,是因?yàn)?Java 7/8(我記不清了)開始,不強(qiáng)制要求你寫 final 了,也就是說從以前就可以這樣寫,不過會(huì)是這個(gè)樣子:

private FutureTask<Map<String, NewsIdInfo>> getSearchFutureTask(final NewsItem newsItem) {

    return new FutureTask<>(() -> {
        String docId = newsItem.getDocId();
        ...});
}

大概是掃描你匿名子類中所用到的外部變量,可能 做一個(gè)快照,然后作為一個(gè) final 給子類用。

2018年1月8日 03:34