这是代码
Path file = ...;
BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);
System.out.println("creationTime: " + attr.creationTime());
System.out.println("lastAccessTime: " + attr.lastAccessTime());
System.out.println("lastModifiedTime: " + attr.lastModifiedTime());
在链接
http://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html,他们说BasicFileAttributes是一个类。但是链接http://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/BasicFileAttributes.html将其称为接口。(尽管这不是主要问题,但请清除此混淆)
主要问题:
我无法理解BasicFileAttributes.class参数。他们正在尝试将类作为参数传递吗?
最佳答案
BasicFileAttributes是一个接口,但是在口语表达中通常使用诸如“ BasicFileAttributes class”之类的短语来表示“实现BasicFileAttributes的类”。
关于您的主要问题,您正在传递特殊Java类java.lang.Class
的实例。因此,不,您不是在“传递类”(实际上,该概念在Java中是没有意义的)。您正在传递描述接口java.lang.Class
的BasicFileAttributes
实例。
这类似于将File
的实例传递给方法时:您没有传递实际的文件,而是传递了可以管理该文件的对象。