2017-05-23 6 views
-7

に以下のコードは、私が事前にJavaで7ファイルラムダ式は、Java 7

おかげで動作するように同じ機能を必要とする

files.addAll(Arrays.asList(folder.listFiles((f) -> f.getName() 
       .endsWith(CustomConstantsRepository.FILE_EXT_DAT) 
       && f.getName().startsWith(fileName)))); 

のJava 8で正常に動作します。

+0

基本的に[フォルダ内のすべてのファイルを読む](https://stackoverflow.com/a/1846349)を参照して、サフィックスと開始の名前としてelseに検証を追加してください。 – KevinO

+0

この[第三者](https://github.com/orfjackal/retrolambda)を試してみてください。素晴らしいです。 –

+0

"gimme teh codez"はトピックではないので、この質問を閉じるために投票しています。 – EJoshuaS

答えて

1

Java 8ラムダ式は本質的にほぼ同じことを行う合成糖ですので、Anonymous Inner Classを使用します。それはこのようなものになります。

files.addAll(Arrays.asList(folder.listFiles(new FileFilter(){ 

     @Override 
     public boolean accept(File f) { 
      return f.getName().endsWith(CustomConstantsRepository.FILE_EXT_DAT) && f.getName().startsWith(fileName))); 
     } 

})));