有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

设计模式java的目标是什么。尼奥。文件CopyOption接口?

我对JDK7 nio包(我经常使用)的设计感到困惑。以Files.copy为例,它采用CopyOption的实例,这是一个空接口,例如由StandardCopyOption实现:

public enum StandardCopyOption implements CopyOption {
    REPLACE_EXISTING
    COPY_ATTRIBUTES,
    ATOMIC_MOVE;
}

public interface CopyOption {
}

这种设计背后的想法是什么?我的意思是,尽管CopyOption接口被传递给Files.copy,但Files.copy仍然对StandardCopyOption有编译时依赖性(请参阅Files.copy的源代码)


共 (1) 个答案

  1. # 1 楼答案

    注意,有两个不同的枚举实现CopyOptionStandardCopyOptionLinkOption。由于这两个重叠的语义(LinkOption适用于链接,但在复制操作期间,也适用于),拥有一个超级接口允许copy()的API更干净,因为它需要一个CopyOption的varargs列表,该列表可以包含任一枚举的实例