OutputStream类用于写入文件。这怎么可能?

时间:2015-06-21 19:26:22

标签: java io outputstream

以下代码引自:http://examples.javacodegeeks.com/core-java/io/fileoutputstream/java-io-fileoutputstream-example/

虽然OutputStream是一个抽象方法,但在下面的代码中,OutputStream对象用于写入文件。

Files.newOutputStream(filepath))返回OutputStream。然后,out的类型是OutputStream,out out引用OutputStream。

当OutputStream是一个抽象类时,这怎么可能呢?

base.html

1 个答案:

答案 0 :(得分:4)

仅仅因为声明的类型是OutputStream,这并不意味着实现不会创建具体子类的实例OutputStream。你一直看到这个接口。例如:

public List<String> getList() {
    return new ArrayList<String>();
}

基本上你需要区分暴露的API(使用抽象类)和实现(可以选择使用它想要的任何子类)。

所以Files.newOutputStream可以实现为:

public static OutputStream newOutputStream(Path path)
    throws IOException {
  return new FileOutputStream(path.toFile());
}