这是代码

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.ClassBasicFileAttributes实例。

这类似于将File的实例传递给方法时:您没有传递实际的文件,而是传递了可以管理该文件的对象。

09-05 09:22