下面程序不管我是否在匿名内部类参数中添加final,都没有问题
import java . util . * ; import java . util . regex . * ; import java . io. * ; import java . io . File ; class DirList2 { public static FilenameFilter filter( String regex ) // 这边暂时我不设final , 看看编译是会出现什么情况! { return new FilenameFilter ( ) { private Pattern pattern = Pattern . compile ( regex ) ; public boolean accept ( File dir , String name ) { return pattern . matcher (name) . matches ( ) ; } } ; } public static void main (String [ ] args) { String [ ] names ; File files = new File ( ".") ; // 这个File目录其实名字应该为FilePath //哈哈 if (args . length == 0) { names = files . list ( ) ; } else { names = files . list ( filter (args [0])) ; } Arrays . sort ( names , String . CASE_INSENSITIVE_ORDER ) ; for (String fileName : names ) System . out . println ( fileName ) ; } }
不加,编译器会报错。是不是没编译了?
Java 8 只要求是 effectively final,写不写没关系的。