Java中的FilterWriter和Writer有什么区别?

时间:2016-08-03 04:32:32

标签: java api io design-rationale

https://docs.oracle.com/javase/7/docs/api/java/io/Writer.htmlhttps://docs.oracle.com/javase/7/docs/api/java/io/FilterWriter.html,我发现FilterWriter是一个抽象类,它扩展了Writer并且没有额外的方法。

我只是想知道:

  1. FilterWriter 定义为 Writer的确切副本的理由是什么?
  2. FilterWriterWriter 之间有什么区别?

2 个答案:

答案 0 :(得分:1)

  
      
  1. Writer定义为FilterWriter的确切副本的理由是什么?
  2.   

Writer 不是 abstract的精确副本。虽然声明了Writer,但它提供了所有FilterWriter抽象方法的实现,并且它覆盖了一些具体方法。这些实现符合Writer的特定目的,如其API文档中所述:

  

抽象类FilterWriter本身提供了将所有请求传递给包含流的默认方法。 FilterWriter的子类应覆盖其中一些方法,还可能提供其他方法和字段。

尽管没有抽象方法,但该类是抽象的,因为所描述的功能本身并不直接有用。它旨在作为在将字符流写入基础FilterWriter时监视或修改字符流的类的基类。

  
      
  1. WriterFilterWriter之间的区别是什么?
  2.   

在功能上,WriterWriter的抽象方法提供了具体的实现,并且它覆盖了其他一些方法。类型方面,FilterWriter是一组类的超类,FilterWriter不是超类,包括UIScrollView本身。

答案 1 :(得分:0)

$md-primary: md-palette($md-teal, 500, 100, 700, $md-contrast-palettes); 类是过滤输出的所有编写器类的超类。 FilterWriter的子类通过包装现有的编写器(称为底层编写器)并提供其他功能来工作。 FilterWriter的方法只是使用调用底层编写器的相应方法的版本覆盖FilterWriter的方法。

Writer无法直接实例化;它必须是子类。 FilterWriter的子类的实例由另一个FilterWriter对象构造。 Writer的子类的方法应该重写某些方法,以扩展它们的行为或提供某种过滤。

FilterWriterFilterWriter类似,不同之处在于它处理字符流而不是字节流。