[Android] Java 8 中 Lambda 表達(dá)式的使用

Java 8 中 Lambda 表達(dá)式的使用
在 Java 8 的版本更新中,增加了 Lambda 表達(dá)式支持 . 讓我們可以用更簡潔的代碼寫出完整的功能 . 下面就看看關(guān)于 Lambda 表達(dá)式的使用方式把 .

平時(shí)我們在使用 Thread 的時(shí)候 , 通常會(huì)傳入一個(gè) Runnable 的匿名內(nèi)部類 , 代碼會(huì)變得多 . 類似下面這樣 .

new Thread(new Runnable() {
    @Override
    public void run() {
    System.out.println("我用了6行");
    }
}).start();

如果我們使用了 Java 8 的 Lambda 表達(dá)式 , 只需一行代碼就可完成 .

new Thread(() -> System.out.println("我用了一行") ).start();

這是在調(diào)用一個(gè)線程的時(shí)候試用 Lambda 的方式 . 在 Android 開發(fā)中 , 更多的是回調(diào)接口會(huì)用到 . 比如下面的這個(gè) .

checkBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(AboutActivity.this, "非 Lambel ",Toast.LENGTH_LONG).show();
    }
});

在使用了 Lambda 之后 .

checkBtn.setOnClickListener(v1 -> Toast.makeText(AboutActivity.this, "是 Lambel ",Toast.LENGTH_LONG).show());

其中傳入的 View 變量 v1 可以任意起名字 , 但是推薦使用簡單命名 讓代碼更簡潔 .

總體格式大致如下:

參數(shù) -> 方法體

使用 Lambda 表達(dá)式還可以簡單快速的遍歷 List 集合 .

List<String> num = new LinkedList<>();
num.add("tt1"); 
num.add("tt2");
num.forEach(t-> System.out.println(t));

Lambda表達(dá)式 vs 匿名類

既然 Lambda 表達(dá)式即將正式取代 java 代碼中的匿名內(nèi)部類,那么有必要對(duì)二者做一個(gè)比較分析。一個(gè)關(guān)鍵的不同點(diǎn)就是關(guān)鍵字 this 。匿名類的 this 關(guān)鍵字指向匿名類,而 Lambda 表達(dá)式的 this 關(guān)鍵字指向包圍 Lambda 表達(dá)式的類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容