通过链接构造函数实例化对象



我的教科书在文件和流部分有一个让我感到困惑的例子。

BufferedReader inFile = new BufferedReader (new FileReader ("data.txt"));

我的想法是,我们正在创建一个类型为BufferedReader的对象,并使用另一个类构造函数FileReader构造它们,然后将该对象"放置"到BufferedReader构造函数中。

为什么我们使用两个"新"关键字实例化对象,发生了什么?

这属于多态性还是遗传性?

也许这个等效的代码会更有意义:

FileReader fileReader = new FileReader("data.txt");
BufferedReader inFile = new BufferedReader(fileReader);

所有这些操作都是构造一个用作BufferedReader构造函数参数的FileReader对象。这是一个既不多态也不继承的示例,这只是将表达式嵌套在其他表达式中。

大多数流类都可以链接在一起。new 运算符使用后面的构造函数返回 next 类型的实例。因此,FileReader使用将要读取的文件进行初始化,并将生成的对象传递给BufferedReader以便缓冲从文件中读取的内容,以便在实际读取期间进行高效 I/O。

最新更新