下面程序不管我是否在匿名内部类参数中添加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,写不写没关系的。
不加,编译器会报错。是不是没编译了?