您的位置:首页 > 其它

匿名内部类调用参数需要为final

2018-03-22 09:51 239 查看
thinking in java的I/O一章中,有这样的代码:

//: io/DirList3.java
// Building the anonymous inner class "in-place."
// {Args: "D.*\.java"}
import java.util.regex.*;
import java.io.*;
import java.util.*;

public class DirList3 {
public static void main(final String[] args) {
File path = new File(".");
String[] list;
if (args.length == 0)
list = path.list();
else
list = path.list(new FilenameFilter() {
private Pattern pattern = Pattern.compile(args[0]);

public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
});
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for (String dirItem : list)
System.out.println(dirItem);
}
}/* Output:
DirectoryDemo.java
DirList.java
DirList2.java
DirList3.java
*///:~


使用final关键字,旨在不希望直接在局部修改变量参数值,而且局部变量的值仅仅在范围内有效,同时内部类的变量却一直保存,这种情况使用final关键字起到拷贝的作用。

同样的,在容器的双括号初始化中,之前也不支持在初始化内部调用非final的变量(在jdk1.8以后改变)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐