java--think in java 检测工程目录列表
来源:互联网 发布:农村淘宝拿快递要钱吗 编辑:程序博客网 时间:2024/06/05 18:12
think in java 第四版 第18.1.1章节,列出了3套代码,来表示一个功能的三种实现。
三种不同的实现,对代码进行了不同程度压缩。
代码:
package io;//: io/DirList.java// Display a directory listing using regular expressions.// {Args: "D.*\.java"}import java.util.regex.*;import java.io.*;import java.util.*;public class DirList { public static void main(String[] args) { File path = new File("."); String[] list; if(args.length == 0) list = path.list(); else list = path.list(new DirFilter(args[0])); Arrays.sort(list, String.CASE_INSENSITIVE_ORDER); for(String dirItem : list) System.out.println(dirItem); }}class DirFilter implements FilenameFilter { private Pattern pattern; public DirFilter(String regex) { pattern = Pattern.compile(regex); } public boolean accept(File dir, String name) { return pattern.matcher(name).matches(); }} /* Output:DirectoryDemo.javaDirList.javaDirList2.javaDirList3.java*///:~
package io;//: io/DirList2.java// Uses anonymous inner classes.// {Args: "D.*\.java"}import java.util.regex.*;import java.io.*;import java.util.*;public class DirList2 { public static FilenameFilter filter(final String regex) { // Creation of anonymous inner class: return new FilenameFilter() { private Pattern pattern = Pattern.compile(regex); public boolean accept(File dir, String name) { return pattern.matcher(name).matches(); } }; // End of anonymous inner class } public static void main(String[] args) { File path = new File("."); String[] list; if(args.length == 0) list = path.list(); else list = path.list(filter(args[0])); Arrays.sort(list, String.CASE_INSENSITIVE_ORDER); for(String dirItem : list) System.out.println(dirItem); }} /* Output:DirectoryDemo.javaDirList.javaDirList2.javaDirList3.java*///:~
在list方法使用匿名内部类作为方法的参数。
优点:代码隔离、聚拢于一点。
缺点:不易阅读。
package io;//: 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.javaDirList.javaDirList2.javaDirList3.java*///:~
- java--think in java 检测工程目录列表
- Think In Java 4源码工程
- think in java 读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- think in java
- think in java
- Think in JAVA电子书
- Think in java读书笔记
- Think in java 笔记
- think in java
- think in java ch6
- think in java
- think in java
- think in java
- think in java
- Java中Runnable和Thread的区别
- 存储方式DAS,NAS,SAN
- Eclipse关闭XML文件验证的方法
- Android 自动生成build.xml
- 如何看懂源代码--(分析源代码方法) 一
- java--think in java 检测工程目录列表
- linux 下运行一个使用<math.h>库的.c文件时的命令
- 在ubuntu中手动安装firefox的插件--Flash Player
- 交叉编译器arm-linux-gcc-4.4.3安装
- 求数组{2,4,6,2,7}全排列
- DevExpress中绑定信息列表时,列字段如何再绑定方法
- 浅谈Devpress之ASPxGridLookup使用方法
- PHP Ctype函数
- android Native相关知识点