匿名内部类调用参数需要为final
2018-03-22 09:51
239 查看
thinking in java的I/O一章中,有这样的代码:
使用final关键字,旨在不希望直接在局部修改变量参数值,而且局部变量的值仅仅在范围内有效,同时内部类的变量却一直保存,这种情况使用final关键字起到拷贝的作用。
同样的,在容器的双括号初始化中,之前也不支持在初始化内部调用非final的变量(在jdk1.8以后改变)。
//: 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以后改变)。
相关文章推荐
- 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
- 一个内部类定义在外部类方法中的的例子(调用参数的时候需要注意final来修饰)
- 匿名内部类调用参数时为什么参数必须是final的
- java 匿名内部类的方法参数需要final吗?
- Java为什么匿名内部类参数引用需要用final进行修饰?
- 为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?
- [多问几个为什么]为什么匿名内部类中引用的局部变量和参数需要final而成员字段不用?(转)
- 匿名内部类 参数用final修饰
- 匿名内部类使用final参数的问题(…
- Cannot refer to the non-final local variable user defined in an enclosing scope 内部类定义在方法内,方法定义的参数(形参)无法被内部类直接访问,需要用final定义
- 为什么匿名内部类的参数必须为finalhttp://feiyeguohai.iteye.com/blog/1500108
- 为什么匿名内部类参数必须为final类型
- 匿名内部类使用了一个在其外部定义的对象,为什么编译器会要求其参数引用是final呢
- 匿名内部类使用final参数的问题
- 为什么匿名内部类参数必须为final类型
- 为什么匿名内部类参数必须为final类型
- 为什么匿名内部类参数必须为final类型
- 为什么匿名内部类参数必须为final类型
- 为什么匿名内部类参数必须为final类型
- 匿名内部类的参数引用只能是final,可能遇到的问题及其解决