匿名內部類方法重寫(很常用)

引言

當我們在使用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 就打印出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章