Thinking in Java(10)-Java IO
2017-01-17 12:25
417 查看
1.一个目录列表器的实现
这个小例子中使用了回调机制,list()回调了accept()方法。不是很理解回调的话,看完这篇文章就理解了:一个经典例子让你彻彻底底理解java回调机制.
用匿名内部类重写目录列表器:
甚至可以把匿名内部类写成list的一个参数:
package interfaces.classprocessor; import java.io.*; public class DirList { public static void main(String[] args) { // TODO Auto-generated method stub try{ File path = new File("C:/Docs/Java8 API/docs/api/java/io"); String[] list = null; if (args.length == 0) list = path.list(); else list = path.list(new DirFilter(list[0])); for (int i = 0;i < list.length;i++) System.out.println(list[i]); } catch(Exception e) { e.printStackTrace(); } } } class DirFilter implements FilenameFilter { String afn; DirFilter(String afn){ this.afn = afn; } @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub String f = new File(name).getName(); return f.indexOf(afn) != -1; } }
这个小例子中使用了回调机制,list()回调了accept()方法。不是很理解回调的话,看完这篇文章就理解了:一个经典例子让你彻彻底底理解java回调机制.
用匿名内部类重写目录列表器:
package interfaces.classprocessor; import java.io.*; public class DirList2 { public static FilenameFilter filter(final String afn) { return new FilenameFilter() { String fn = afn; @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub String f = new File(name).getName(); return f.indexOf(fn) != -1; } }; } public static void main(String[] args) { // TODO Auto-generated method stub try { File path = new File("C:/Docs/Java8 API/docs/api/java/io"); String[] list; if (args.length == 0) list = path.list(); else list = path.list(filter(args[0])); for (int i = 0;i < list.length;i++) System.out.println(list[i]); } catch(Exception e) { e.printStackTrace(); } } }
甚至可以把匿名内部类写成list的一个参数:
package interfaces.classprocessor; import java.io.*; public class DirList3 { public static void main(final String[] args) { // TODO Auto-generated method stub try { File path = new File("C:/Docs/Java8 API/docs/api/java/io"); String[] list; if (args.length == 0) list = path.list(); else list = path.list( new FilenameFilter() { public boolean accept(File dir,String name) { String f = new File(name).getName(); return f.indexOf(args[0]) != -1; } } ); for(int i = 0;i < list.length;i++) System.out.println(list[i]); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 《thinking in java》笔记10-final + blank final +final修饰形参
- thinking in java test3.10练习(10)按位运算
- thinking in java test5.5练习(10)(11)(12)finalize()方法
- thinking-in-java(10)内部类
- 《thinking&nbsp;in&nbsp;java》学习笔记10
- thinking in java test5.5练习(10)(11)(12)finalize()方法
- Thinking in Java 10
- Thinking in Java from Chapter 10
- Thinking-in-Java 读书笔记-10-内部类
- Reading "Thinking in Java" #3
- Thinking in java Chapter 1 笔记
- Thinking in Java 读书笔记 —— 1.Introducation to Object
- java 线程[摘抄至《Thinking in Java》]
- 《Thinking in Java》读书笔记(更新中2005.11.08)
- 很多人知道《Thinking in Java》吧,那么《Thinking in C#》呢?
- 重温Thinking in Java(一)
- Think in Java(12)-IO
- 买了thinking in java
- 【Notes】《Thinking in Java》【Chapter 11】Part II
- Reading "Thinking in Java" #5