第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

關(guān)于jdk8中方法引用的問題?

關(guān)于jdk8中方法引用的問題?

HUWWW 2019-03-12 18:15:53
今天看書,講道JDK8中新增了lambda,可以實(shí)現(xiàn)方法引用例如:System.out::print 等于 System.out.print但是我還是沒有明白,這樣做的意義是什么呢?書中有個(gè)練習(xí)題1,使用java.io.File中的listFiles(FileFilter)和isDirectory()這兩個(gè)方法實(shí)現(xiàn)找出某個(gè)文件夾下所有子文件夾的功能。2,使用lambda表達(dá)式來代替FileFilter3,再將它改寫為一個(gè)方法引用1和2我基本上完成了,大家可以看代碼public static void main(String[] args) {        List<File> totalFiles = getSonFiles(new File("F:\\"));    }    static List<File> getSonFiles(File f){        List<File> fileList = new ArrayList<>();        File[] files = f.listFiles(file -> file.isDirectory());        if(files == null || files.length == 0){            return fileList;        }        for (File currentFile: files) {            fileList.add(currentFile);        }        List<File> currentSonFiles = new ArrayList<>();        for (File currentFile: fileList) {            currentSonFiles.addAll(getSonFiles(currentFile));        }        fileList.addAll(currentSonFiles);        return fileList;    }不知道這塊代碼有沒有還需要改進(jìn)的地方至于3我真的是沒有明白,到底該怎么改呢?求大神帶一下?。。?
查看完整描述

1 回答

?
楊__羊羊

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

方法引用分為4類:


引用靜態(tài)方法 

Class::staticMethodName


例子: (str) -> Integer.valueOf(str),對應(yīng) Integer::valueOf

引用特定對象的實(shí)例方法 

Instance::instanceMethodName


例子: (collection) -> list.addAll(collection),對應(yīng) list::addAll

引用特定類型的的方法 

Type::methodName


例子: (file) -> file.isDirectory,對應(yīng) File::isDirectory

引用構(gòu)造函數(shù)

Class::new


例子: () -> new Object(),對應(yīng) Object::new 

你這里屬于第三種:


static List<File> getSonFiles(File f) {

        

    //File[] files = f.listFiles(file -> file.isDirectory());

    File[] files = f.listFiles(File::isDirectory); // 方法引用

    

    if (files == null || files.length == 0) {

        return new ArrayList<>(0);

    }

    

    List<File> fileList = new ArrayList<>();

    for (File currentFile : files) {

        fileList.add(currentFile);

    }

    

    List<File> currentSonFiles = new ArrayList<>();

    for (File currentFile : fileList) {

        currentSonFiles.addAll(getSonFiles(currentFile));

    }

    fileList.addAll(currentSonFiles);

    

    return fileList;

}


查看完整回答
反對 回復(fù) 2019-04-18
  • 1 回答
  • 0 關(guān)注
  • 345 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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