匿名内部类方法重写(很常用)

引言

当我们在使用java的类作为参数时,经常会需要重写这个类中的某些方法。这个时候通常有两种方法:一是我们写一个类继承这个类并重写需要重写的方法,传参时用子类。二是使用匿名内部类的方式重写其方法,也可以达到相同的效果,并且代码更加简洁。在这里第一种方法就不说了,重点看看第二种方法是怎么个用法 。

一个NIO处理目录树的例子

目录树意味着一个目录里既有文件也有子目录,也可能都没有,也可能有其一。NIO 2.0 可以很方便地遍历一颗目录树,并操作符合条件的文件;这其中关键的一个方法就是 Files 类的 walkFileTree,其定义如下:

public static Path walkFileTree(Path start, FileVisitor<? super Path> visitor)
        throws IOException
    {
        return walkFileTree(start,
                            EnumSet.noneOf(FileVisitOption.class),
                            Integer.MAX_VALUE,
                            visitor);
    }

第二个参数 FileVisitor 被称为文件访问器接口,它实现起来非常复杂,要实现 5 个方法呢,但幸好 JDK 的设计者提供了一个默认的实现类 SimpleFileVisitor,如果我们只想从目录树中找到 txt 后缀的文件,可以这样做:

// 相对路径
Path dir = Paths.get("chenmo");

try {
	Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
		@Override
		public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
			if (file.toString().endsWith(".txt")) {
				System.out.println(file.getFileName());
			}
			return FileVisitResult.CONTINUE;
		}
	});
} catch (IOException e) {
	e.printStackTrace();
}

通过创建匿名内部类来重写 SimpleFileVisitor 的 visitFile 方法,如果后缀名为 txt 就打印出来。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值